Project Euler 013
以下の50桁の数字100個の合計の上から10桁を求めなさい。
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538
20849603980134001723930671666823555245252804609722
53503534226472524250874054075591789781264330331690
->[次の問題](https://qiita.com/radiol/items/e2cf4c4ad63626ce9f46)
## 考え方
シンプルな問題ですね。Pythonなら大きな数字もそのまま扱えますし、
50桁100個程度ならそのまま計算してしまっても大して時間はかかりませんでした。
```Python:euler013.py
def main():
n = 10
# 長かったので問題の50桁の数字はテキストファイルにしました
with open('euler013.txt') as file:
number_lines = file.readlines()
all_number_lines = [int(number.strip()) for number in number_lines] # strからintへ変換
all_sum_numbers = sum(all_number_lines) # 合計
print(all_sum_numbers) # 全部表示
print(str(all_sum_numbers)[:n]) # 先頭10桁だけ表示
if __name__ == '__main__':
main()
```
これが1000桁とかになって来たら先頭の10桁だけで計算して、あとは大きい桁から逆順に繰り上がりの影響がなくなる場所までさかのぼって行く感じになるんでしょうか。
今回の場合、先頭から11桁を足すだけで`5537376230342`が得られ、ここより後ろの数字がなんであれ後半3桁の`342`に繰り上がりが吸収されるので同じ結果になります。