Skip to content

3-B1. int128

入力からint型の非負整数値を1つ受け取り、倍して出力しよう。

入力/出力例

例1

入力

5

出力

50000000000000000000000000

ヒント

ヒント1

この問題では出力は常に以上となるため、通常のint型を使うとオーバーフローしてしまいます。数値ではなく、別の方法で扱うことはできないでしょうか...?

解答例

解答例1

クリックして展開
cpp
#include <iostream>
using namespace std;

int main() {
    int input_number;
    cin >> input_number;

    // 文字列として必要な0を追加することでオーバーフローを回避
    cout << input_number << "0000000000000000000000000" << endl;
}

実は...

クリックして展開

Clang++やG++などの一部のコンパイラはint128型(__int128)という通常のint型より大きい値を扱うことが出来る型に対応しているため、今回の問題を掛け算として解くことができる。