teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

鳴かぬなら・・・

2019/10/29 12:53

投稿

raccy
raccy

スコア21784

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