プロジェクト

全般

プロフィール

Problem 13 » 履歴 » バージョン 2

Noppi, 2023/12/29 15:43

1 1 Noppi
[ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]]
2
# [[Problem 13]]
3
4
## Large Sum
5
Work out the first ten digits of the sum of the following one-hundred $50$-digit numbers.
6
```
7
37107287533902102798797998220837590246510135740250
8
46376937677490009712648124896970078050417018260538
9
74324986199524741059474233309513058123726617309629
10
91942213363574161572522430563301811072406154908250
11
23067588207539346171171980310421047513778063246676
12
89261670696623633820136378418383684178734361726757
13
28112879812849979408065481931592621691275889832738
14
44274228917432520321923589422876796487670272189318
15
47451445736001306439091167216856844588711603153276
16
70386486105843025439939619828917593665686757934951
17
62176457141856560629502157223196586755079324193331
18
64906352462741904929101432445813822663347944758178
19
92575867718337217661963751590579239728245598838407
20
58203565325359399008402633568948830189458628227828
21
80181199384826282014278194139940567587151170094390
22
35398664372827112653829987240784473053190104293586
23
86515506006295864861532075273371959191420517255829
24
71693888707715466499115593487603532921714970056938
25
54370070576826684624621495650076471787294438377604
26
53282654108756828443191190634694037855217779295145
27
36123272525000296071075082563815656710885258350721
28
45876576172410976447339110607218265236877223636045
29
17423706905851860660448207621209813287860733969412
30
81142660418086830619328460811191061556940512689692
31
51934325451728388641918047049293215058642563049483
32
62467221648435076201727918039944693004732956340691
33
15732444386908125794514089057706229429197107928209
34
55037687525678773091862540744969844508330393682126
35
18336384825330154686196124348767681297534375946515
36
80386287592878490201521685554828717201219257766954
37
78182833757993103614740356856449095527097864797581
38
16726320100436897842553539920931837441497806860984
39
48403098129077791799088218795327364475675590848030
40
87086987551392711854517078544161852424320693150332
41
59959406895756536782107074926966537676326235447210
42
69793950679652694742597709739166693763042633987085
43
41052684708299085211399427365734116182760315001271
44
65378607361501080857009149939512557028198746004375
45
35829035317434717326932123578154982629742552737307
46
94953759765105305946966067683156574377167401875275
47
88902802571733229619176668713819931811048770190271
48
25267680276078003013678680992525463401061632866526
49
36270218540497705585629946580636237993140746255962
50
24074486908231174977792365466257246923322810917141
51
91430288197103288597806669760892938638285025333403
52
34413065578016127815921815005561868836468420090470
53
23053081172816430487623791969842487255036638784583
54
11487696932154902810424020138335124462181441773470
55
63783299490636259666498587618221225225512486764533
56
67720186971698544312419572409913959008952310058822
57
95548255300263520781532296796249481641953868218774
58
76085327132285723110424803456124867697064507995236
59
37774242535411291684276865538926205024910326572967
60
23701913275725675285653248258265463092207058596522
61
29798860272258331913126375147341994889534765745501
62
18495701454879288984856827726077713721403798879715
63
38298203783031473527721580348144513491373226651381
64
34829543829199918180278916522431027392251122869539
65
40957953066405232632538044100059654939159879593635
66
29746152185502371307642255121183693803580388584903
67
41698116222072977186158236678424689157993532961922
68
62467957194401269043877107275048102390895523597457
69
23189706772547915061505504953922979530901129967519
70
86188088225875314529584099251203829009407770775672
71
11306739708304724483816533873502340845647058077308
72
82959174767140363198008187129011875491310547126581
73
97623331044818386269515456334926366572897563400500
74
42846280183517070527831839425882145521227251250327
75
55121603546981200581762165212827652751691296897789
76
32238195734329339946437501907836945765883352399886
77
75506164965184775180738168837861091527357929701337
78
62177842752192623401942399639168044983993173312731
79
32924185707147349566916674687634660915035914677504
80
99518671430235219628894890102423325116913619626622
81
73267460800591547471830798392868535206946944540724
82
76841822524674417161514036427982273348055556214818
83
97142617910342598647204516893989422179826088076852
84
87783646182799346313767754307809363333018982642090
85
10848802521674670883215120185883543223812876952786
86
71329612474782464538636993009049310363619763878039
87
62184073572399794223406235393808339651327408011116
88
66627891981488087797941876876144230030984490851411
89
60661826293682836764744779239180335110989069790714
90
85786944089552990653640447425576083659976645795096
91
66024396409905389607120198219976047599490197230297
92
64913982680032973156037120041377903785566085089252
93
16730939319872750275468906903707539413042652315011
94
94809377245048795150954100921645863754710598436791
95
78639167021187492431995700641917969777599028300699
96
15368713711936614952811305876380278410754449733078
97
40789923115535562561142322423255033685442488917353
98
44889911501440648020369068063960672322193204149535
99
41503128880339536053299340368006977710650566631954
100
81234880673210146739058568557934581403627822703280
101
82616570773948327592232845941706525094512325230608
102
22918802058777319719839450180888072429661980811197
103
77158542502016545090413245809786882778948721859617
104
72107838435069186155435662884062257473692284509516
105
20849603980134001723930671666823555245252804609722
106
53503534226472524250874054075591789781264330331690
107
```
108
109
## 大きな数の足し算
110
以下の50桁の数字100個の合計の上から10桁を求めなさい。
111
```
112
37107287533902102798797998220837590246510135740250
113
46376937677490009712648124896970078050417018260538
114
74324986199524741059474233309513058123726617309629
115
91942213363574161572522430563301811072406154908250
116
23067588207539346171171980310421047513778063246676
117
89261670696623633820136378418383684178734361726757
118
28112879812849979408065481931592621691275889832738
119
44274228917432520321923589422876796487670272189318
120
47451445736001306439091167216856844588711603153276
121
70386486105843025439939619828917593665686757934951
122
62176457141856560629502157223196586755079324193331
123
64906352462741904929101432445813822663347944758178
124
92575867718337217661963751590579239728245598838407
125
58203565325359399008402633568948830189458628227828
126
80181199384826282014278194139940567587151170094390
127
35398664372827112653829987240784473053190104293586
128
86515506006295864861532075273371959191420517255829
129
71693888707715466499115593487603532921714970056938
130
54370070576826684624621495650076471787294438377604
131
53282654108756828443191190634694037855217779295145
132
36123272525000296071075082563815656710885258350721
133
45876576172410976447339110607218265236877223636045
134
17423706905851860660448207621209813287860733969412
135
81142660418086830619328460811191061556940512689692
136
51934325451728388641918047049293215058642563049483
137
62467221648435076201727918039944693004732956340691
138
15732444386908125794514089057706229429197107928209
139
55037687525678773091862540744969844508330393682126
140
18336384825330154686196124348767681297534375946515
141
80386287592878490201521685554828717201219257766954
142
78182833757993103614740356856449095527097864797581
143
16726320100436897842553539920931837441497806860984
144
48403098129077791799088218795327364475675590848030
145
87086987551392711854517078544161852424320693150332
146
59959406895756536782107074926966537676326235447210
147
69793950679652694742597709739166693763042633987085
148
41052684708299085211399427365734116182760315001271
149
65378607361501080857009149939512557028198746004375
150
35829035317434717326932123578154982629742552737307
151
94953759765105305946966067683156574377167401875275
152
88902802571733229619176668713819931811048770190271
153
25267680276078003013678680992525463401061632866526
154
36270218540497705585629946580636237993140746255962
155
24074486908231174977792365466257246923322810917141
156
91430288197103288597806669760892938638285025333403
157
34413065578016127815921815005561868836468420090470
158
23053081172816430487623791969842487255036638784583
159
11487696932154902810424020138335124462181441773470
160
63783299490636259666498587618221225225512486764533
161
67720186971698544312419572409913959008952310058822
162
95548255300263520781532296796249481641953868218774
163
76085327132285723110424803456124867697064507995236
164
37774242535411291684276865538926205024910326572967
165
23701913275725675285653248258265463092207058596522
166
29798860272258331913126375147341994889534765745501
167
18495701454879288984856827726077713721403798879715
168
38298203783031473527721580348144513491373226651381
169
34829543829199918180278916522431027392251122869539
170
40957953066405232632538044100059654939159879593635
171
29746152185502371307642255121183693803580388584903
172
41698116222072977186158236678424689157993532961922
173
62467957194401269043877107275048102390895523597457
174
23189706772547915061505504953922979530901129967519
175
86188088225875314529584099251203829009407770775672
176
11306739708304724483816533873502340845647058077308
177
82959174767140363198008187129011875491310547126581
178
97623331044818386269515456334926366572897563400500
179
42846280183517070527831839425882145521227251250327
180
55121603546981200581762165212827652751691296897789
181
32238195734329339946437501907836945765883352399886
182
75506164965184775180738168837861091527357929701337
183
62177842752192623401942399639168044983993173312731
184
32924185707147349566916674687634660915035914677504
185
99518671430235219628894890102423325116913619626622
186
73267460800591547471830798392868535206946944540724
187
76841822524674417161514036427982273348055556214818
188
97142617910342598647204516893989422179826088076852
189
87783646182799346313767754307809363333018982642090
190
10848802521674670883215120185883543223812876952786
191
71329612474782464538636993009049310363619763878039
192
62184073572399794223406235393808339651327408011116
193
66627891981488087797941876876144230030984490851411
194
60661826293682836764744779239180335110989069790714
195
85786944089552990653640447425576083659976645795096
196
66024396409905389607120198219976047599490197230297
197
64913982680032973156037120041377903785566085089252
198
16730939319872750275468906903707539413042652315011
199
94809377245048795150954100921645863754710598436791
200
78639167021187492431995700641917969777599028300699
201
15368713711936614952811305876380278410754449733078
202
40789923115535562561142322423255033685442488917353
203
44889911501440648020369068063960672322193204149535
204
41503128880339536053299340368006977710650566631954
205
81234880673210146739058568557934581403627822703280
206
82616570773948327592232845941706525094512325230608
207
22918802058777319719839450180888072429661980811197
208
77158542502016545090413245809786882778948721859617
209
72107838435069186155435662884062257473692284509516
210
20849603980134001723930671666823555245252804609722
211
53503534226472524250874054075591789781264330331690
212
```
213
214
```scheme
215 2 Noppi
#!r6rs
216
#!chezscheme
217
218
(import (chezscheme))
219
220
(define large-numbers
221
  '(37107287533902102798797998220837590246510135740250
222
    46376937677490009712648124896970078050417018260538
223
    74324986199524741059474233309513058123726617309629
224
    91942213363574161572522430563301811072406154908250
225
    23067588207539346171171980310421047513778063246676
226
    89261670696623633820136378418383684178734361726757
227
    28112879812849979408065481931592621691275889832738
228
    44274228917432520321923589422876796487670272189318
229
    47451445736001306439091167216856844588711603153276
230
    70386486105843025439939619828917593665686757934951
231
    62176457141856560629502157223196586755079324193331
232
    64906352462741904929101432445813822663347944758178
233
    92575867718337217661963751590579239728245598838407
234
    58203565325359399008402633568948830189458628227828
235
    80181199384826282014278194139940567587151170094390
236
    35398664372827112653829987240784473053190104293586
237
    86515506006295864861532075273371959191420517255829
238
    71693888707715466499115593487603532921714970056938
239
    54370070576826684624621495650076471787294438377604
240
    53282654108756828443191190634694037855217779295145
241
    36123272525000296071075082563815656710885258350721
242
    45876576172410976447339110607218265236877223636045
243
    17423706905851860660448207621209813287860733969412
244
    81142660418086830619328460811191061556940512689692
245
    51934325451728388641918047049293215058642563049483
246
    62467221648435076201727918039944693004732956340691
247
    15732444386908125794514089057706229429197107928209
248
    55037687525678773091862540744969844508330393682126
249
    18336384825330154686196124348767681297534375946515
250
    80386287592878490201521685554828717201219257766954
251
    78182833757993103614740356856449095527097864797581
252
    16726320100436897842553539920931837441497806860984
253
    48403098129077791799088218795327364475675590848030
254
    87086987551392711854517078544161852424320693150332
255
    59959406895756536782107074926966537676326235447210
256
    69793950679652694742597709739166693763042633987085
257
    41052684708299085211399427365734116182760315001271
258
    65378607361501080857009149939512557028198746004375
259
    35829035317434717326932123578154982629742552737307
260
    94953759765105305946966067683156574377167401875275
261
    88902802571733229619176668713819931811048770190271
262
    25267680276078003013678680992525463401061632866526
263
    36270218540497705585629946580636237993140746255962
264
    24074486908231174977792365466257246923322810917141
265
    91430288197103288597806669760892938638285025333403
266
    34413065578016127815921815005561868836468420090470
267
    23053081172816430487623791969842487255036638784583
268
    11487696932154902810424020138335124462181441773470
269
    63783299490636259666498587618221225225512486764533
270
    67720186971698544312419572409913959008952310058822
271
    95548255300263520781532296796249481641953868218774
272
    76085327132285723110424803456124867697064507995236
273
    37774242535411291684276865538926205024910326572967
274
    23701913275725675285653248258265463092207058596522
275
    29798860272258331913126375147341994889534765745501
276
    18495701454879288984856827726077713721403798879715
277
    38298203783031473527721580348144513491373226651381
278
    34829543829199918180278916522431027392251122869539
279
    40957953066405232632538044100059654939159879593635
280
    29746152185502371307642255121183693803580388584903
281
    41698116222072977186158236678424689157993532961922
282
    62467957194401269043877107275048102390895523597457
283
    23189706772547915061505504953922979530901129967519
284
    86188088225875314529584099251203829009407770775672
285
    11306739708304724483816533873502340845647058077308
286
    82959174767140363198008187129011875491310547126581
287
    97623331044818386269515456334926366572897563400500
288
    42846280183517070527831839425882145521227251250327
289
    55121603546981200581762165212827652751691296897789
290
    32238195734329339946437501907836945765883352399886
291
    75506164965184775180738168837861091527357929701337
292
    62177842752192623401942399639168044983993173312731
293
    32924185707147349566916674687634660915035914677504
294
    99518671430235219628894890102423325116913619626622
295
    73267460800591547471830798392868535206946944540724
296
    76841822524674417161514036427982273348055556214818
297
    97142617910342598647204516893989422179826088076852
298
    87783646182799346313767754307809363333018982642090
299
    10848802521674670883215120185883543223812876952786
300
    71329612474782464538636993009049310363619763878039
301
    62184073572399794223406235393808339651327408011116
302
    66627891981488087797941876876144230030984490851411
303
    60661826293682836764744779239180335110989069790714
304
    85786944089552990653640447425576083659976645795096
305
    66024396409905389607120198219976047599490197230297
306
    64913982680032973156037120041377903785566085089252
307
    16730939319872750275468906903707539413042652315011
308
    94809377245048795150954100921645863754710598436791
309
    78639167021187492431995700641917969777599028300699
310
    15368713711936614952811305876380278410754449733078
311
    40789923115535562561142322423255033685442488917353
312
    44889911501440648020369068063960672322193204149535
313
    41503128880339536053299340368006977710650566631954
314
    81234880673210146739058568557934581403627822703280
315
    82616570773948327592232845941706525094512325230608
316
    22918802058777319719839450180888072429661980811197
317
    77158542502016545090413245809786882778948721859617
318
    72107838435069186155435662884062257473692284509516
319
    20849603980134001723930671666823555245252804609722
320
    53503534226472524250874054075591789781264330331690))
321
322
(define total
323
  (apply + large-numbers))
324
325
(define (top10-digits num)
326
  (let ([digits-str (number->string num)])
327
    (assert (<= 10 (string-length digits-str)))
328
    (string->number
329
      (substring digits-str 0 10))))
330
331
(define answer-13
332
  (top10-digits total))
333
334
(printf "13: ~D~%" answer-13)
335 1 Noppi
```