回答編集履歴
1
鳴かぬなら・・・
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
問題をよく読んでください。**整数の大きさが書いていません。**つまり、18446744073709551615といった`UINT64_MAX`を越えてくるような場合もあり得ると言うことです。世にあるほとんどの実装では`int`や`long long`はこのように大きな整数は扱えません。
|
2
2
|
|
3
|
-
ではどうしたら良いのかということを考えなければ
|
3
|
+
ではどうしたら良いのかということを考えなければなりません。もしboostを使用しても良いと書いてあれば、boostの多倍長整数を使うのもありです。ですが、問題文にはboostやその他の多倍長整数ライブラリについて言及がありません。きっと使ってはいけないと考えられます。自分で多倍長整数を実装する方法もありますが、~~めんどくさい~~結構大変です。よって今回は文字列を数値にせずに、文字をそのまま処理する方法がいいと思われます。
|
4
4
|
|
5
5
|
質問のコードからは全体的に書き直す必要があるので、全部最初から書きました。整数以外が入力されたときはおかしくなりますが、来ない前提で書いています。文字列の長さは実装依存みたいですが、試した環境では18446744073709551599文字まではできるようなので、その前にメモリがつきます。
|
6
6
|
|