-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
62d10ff
commit 43a1a48
Showing
6 changed files
with
246 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
Rust Implementation of Problem 13 | ||
================================= | ||
|
||
View source code `here on GitHub! <https://github.com/LivInTheLookingGlass/Euler/blob/master/rust/src/p0013.rs>`_ | ||
|
||
Problem Solution | ||
---------------- | ||
|
||
.. rust:fn:: p0013::p0013() -> i128 | ||
.. literalinclude:: ../../rust/src/p0013.rs | ||
:language: rust | ||
:linenos: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,224 @@ | ||
/* | ||
Project Euler Question 13 | ||
This was pretty easy thanks to 128-bit support in Rust. It wouldn't be that much harder if I needed | ||
to use 64-bit numbers, but 128-bit makes it super easy. | ||
Problem: | ||
Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. | ||
37107287533902102798797998220837590246510135740250 | ||
46376937677490009712648124896970078050417018260538 | ||
74324986199524741059474233309513058123726617309629 | ||
91942213363574161572522430563301811072406154908250 | ||
23067588207539346171171980310421047513778063246676 | ||
89261670696623633820136378418383684178734361726757 | ||
28112879812849979408065481931592621691275889832738 | ||
44274228917432520321923589422876796487670272189318 | ||
47451445736001306439091167216856844588711603153276 | ||
70386486105843025439939619828917593665686757934951 | ||
62176457141856560629502157223196586755079324193331 | ||
64906352462741904929101432445813822663347944758178 | ||
92575867718337217661963751590579239728245598838407 | ||
58203565325359399008402633568948830189458628227828 | ||
80181199384826282014278194139940567587151170094390 | ||
35398664372827112653829987240784473053190104293586 | ||
86515506006295864861532075273371959191420517255829 | ||
71693888707715466499115593487603532921714970056938 | ||
54370070576826684624621495650076471787294438377604 | ||
53282654108756828443191190634694037855217779295145 | ||
36123272525000296071075082563815656710885258350721 | ||
45876576172410976447339110607218265236877223636045 | ||
17423706905851860660448207621209813287860733969412 | ||
81142660418086830619328460811191061556940512689692 | ||
51934325451728388641918047049293215058642563049483 | ||
62467221648435076201727918039944693004732956340691 | ||
15732444386908125794514089057706229429197107928209 | ||
55037687525678773091862540744969844508330393682126 | ||
18336384825330154686196124348767681297534375946515 | ||
80386287592878490201521685554828717201219257766954 | ||
78182833757993103614740356856449095527097864797581 | ||
16726320100436897842553539920931837441497806860984 | ||
48403098129077791799088218795327364475675590848030 | ||
87086987551392711854517078544161852424320693150332 | ||
59959406895756536782107074926966537676326235447210 | ||
69793950679652694742597709739166693763042633987085 | ||
41052684708299085211399427365734116182760315001271 | ||
65378607361501080857009149939512557028198746004375 | ||
35829035317434717326932123578154982629742552737307 | ||
94953759765105305946966067683156574377167401875275 | ||
88902802571733229619176668713819931811048770190271 | ||
25267680276078003013678680992525463401061632866526 | ||
36270218540497705585629946580636237993140746255962 | ||
24074486908231174977792365466257246923322810917141 | ||
91430288197103288597806669760892938638285025333403 | ||
34413065578016127815921815005561868836468420090470 | ||
23053081172816430487623791969842487255036638784583 | ||
11487696932154902810424020138335124462181441773470 | ||
63783299490636259666498587618221225225512486764533 | ||
67720186971698544312419572409913959008952310058822 | ||
95548255300263520781532296796249481641953868218774 | ||
76085327132285723110424803456124867697064507995236 | ||
37774242535411291684276865538926205024910326572967 | ||
23701913275725675285653248258265463092207058596522 | ||
29798860272258331913126375147341994889534765745501 | ||
18495701454879288984856827726077713721403798879715 | ||
38298203783031473527721580348144513491373226651381 | ||
34829543829199918180278916522431027392251122869539 | ||
40957953066405232632538044100059654939159879593635 | ||
29746152185502371307642255121183693803580388584903 | ||
41698116222072977186158236678424689157993532961922 | ||
62467957194401269043877107275048102390895523597457 | ||
23189706772547915061505504953922979530901129967519 | ||
86188088225875314529584099251203829009407770775672 | ||
11306739708304724483816533873502340845647058077308 | ||
82959174767140363198008187129011875491310547126581 | ||
97623331044818386269515456334926366572897563400500 | ||
42846280183517070527831839425882145521227251250327 | ||
55121603546981200581762165212827652751691296897789 | ||
32238195734329339946437501907836945765883352399886 | ||
75506164965184775180738168837861091527357929701337 | ||
62177842752192623401942399639168044983993173312731 | ||
32924185707147349566916674687634660915035914677504 | ||
99518671430235219628894890102423325116913619626622 | ||
73267460800591547471830798392868535206946944540724 | ||
76841822524674417161514036427982273348055556214818 | ||
97142617910342598647204516893989422179826088076852 | ||
87783646182799346313767754307809363333018982642090 | ||
10848802521674670883215120185883543223812876952786 | ||
71329612474782464538636993009049310363619763878039 | ||
62184073572399794223406235393808339651327408011116 | ||
66627891981488087797941876876144230030984490851411 | ||
60661826293682836764744779239180335110989069790714 | ||
85786944089552990653640447425576083659976645795096 | ||
66024396409905389607120198219976047599490197230297 | ||
64913982680032973156037120041377903785566085089252 | ||
16730939319872750275468906903707539413042652315011 | ||
94809377245048795150954100921645863754710598436791 | ||
78639167021187492431995700641917969777599028300699 | ||
15368713711936614952811305876380278410754449733078 | ||
40789923115535562561142322423255033685442488917353 | ||
44889911501440648020369068063960672322193204149535 | ||
41503128880339536053299340368006977710650566631954 | ||
81234880673210146739058568557934581403627822703280 | ||
82616570773948327592232845941706525094512325230608 | ||
22918802058777319719839450180888072429661980811197 | ||
77158542502016545090413245809786882778948721859617 | ||
72107838435069186155435662884062257473692284509516 | ||
20849603980134001723930671666823555245252804609722 | ||
53503534226472524250874054075591789781264330331690 | ||
*/ | ||
|
||
const NUMBERS: [(u128, u128); 100] = [ | ||
(3710728753390210279879799, 8220837590246510135740250), | ||
(4637693767749000971264812, 4896970078050417018260538), | ||
(7432498619952474105947423, 3309513058123726617309629), | ||
(9194221336357416157252243, 0563301811072406154908250), | ||
(2306758820753934617117198, 0310421047513778063246676), | ||
(8926167069662363382013637, 8418383684178734361726757), | ||
(2811287981284997940806548, 1931592621691275889832738), | ||
(4427422891743252032192358, 9422876796487670272189318), | ||
(4745144573600130643909116, 7216856844588711603153276), | ||
(7038648610584302543993961, 9828917593665686757934951), | ||
(6217645714185656062950215, 7223196586755079324193331), | ||
(6490635246274190492910143, 2445813822663347944758178), | ||
(9257586771833721766196375, 1590579239728245598838407), | ||
(5820356532535939900840263, 3568948830189458628227828), | ||
(8018119938482628201427819, 4139940567587151170094390), | ||
(3539866437282711265382998, 7240784473053190104293586), | ||
(8651550600629586486153207, 5273371959191420517255829), | ||
(7169388870771546649911559, 3487603532921714970056938), | ||
(5437007057682668462462149, 5650076471787294438377604), | ||
(5328265410875682844319119, 0634694037855217779295145), | ||
(3612327252500029607107508, 2563815656710885258350721), | ||
(4587657617241097644733911, 0607218265236877223636045), | ||
(1742370690585186066044820, 7621209813287860733969412), | ||
(8114266041808683061932846, 0811191061556940512689692), | ||
(5193432545172838864191804, 7049293215058642563049483), | ||
(6246722164843507620172791, 8039944693004732956340691), | ||
(1573244438690812579451408, 9057706229429197107928209), | ||
(5503768752567877309186254, 0744969844508330393682126), | ||
(1833638482533015468619612, 4348767681297534375946515), | ||
(8038628759287849020152168, 5554828717201219257766954), | ||
(7818283375799310361474035, 6856449095527097864797581), | ||
(1672632010043689784255353, 9920931837441497806860984), | ||
(4840309812907779179908821, 8795327364475675590848030), | ||
(8708698755139271185451707, 8544161852424320693150332), | ||
(5995940689575653678210707, 4926966537676326235447210), | ||
(6979395067965269474259770, 9739166693763042633987085), | ||
(4105268470829908521139942, 7365734116182760315001271), | ||
(6537860736150108085700914, 9939512557028198746004375), | ||
(3582903531743471732693212, 3578154982629742552737307), | ||
(9495375976510530594696606, 7683156574377167401875275), | ||
(8890280257173322961917666, 8713819931811048770190271), | ||
(2526768027607800301367868, 0992525463401061632866526), | ||
(3627021854049770558562994, 6580636237993140746255962), | ||
(2407448690823117497779236, 5466257246923322810917141), | ||
(9143028819710328859780666, 9760892938638285025333403), | ||
(3441306557801612781592181, 5005561868836468420090470), | ||
(2305308117281643048762379, 1969842487255036638784583), | ||
(1148769693215490281042402, 0138335124462181441773470), | ||
(6378329949063625966649858, 7618221225225512486764533), | ||
(6772018697169854431241957, 2409913959008952310058822), | ||
(9554825530026352078153229, 6796249481641953868218774), | ||
(7608532713228572311042480, 3456124867697064507995236), | ||
(3777424253541129168427686, 5538926205024910326572967), | ||
(2370191327572567528565324, 8258265463092207058596522), | ||
(2979886027225833191312637, 5147341994889534765745501), | ||
(1849570145487928898485682, 7726077713721403798879715), | ||
(3829820378303147352772158, 0348144513491373226651381), | ||
(3482954382919991818027891, 6522431027392251122869539), | ||
(4095795306640523263253804, 4100059654939159879593635), | ||
(2974615218550237130764225, 5121183693803580388584903), | ||
(4169811622207297718615823, 6678424689157993532961922), | ||
(6246795719440126904387710, 7275048102390895523597457), | ||
(2318970677254791506150550, 4953922979530901129967519), | ||
(8618808822587531452958409, 9251203829009407770775672), | ||
(1130673970830472448381653, 3873502340845647058077308), | ||
(8295917476714036319800818, 7129011875491310547126581), | ||
(9762333104481838626951545, 6334926366572897563400500), | ||
(4284628018351707052783183, 9425882145521227251250327), | ||
(5512160354698120058176216, 5212827652751691296897789), | ||
(3223819573432933994643750, 1907836945765883352399886), | ||
(7550616496518477518073816, 8837861091527357929701337), | ||
(6217784275219262340194239, 9639168044983993173312731), | ||
(3292418570714734956691667, 4687634660915035914677504), | ||
(9951867143023521962889489, 0102423325116913619626622), | ||
(7326746080059154747183079, 8392868535206946944540724), | ||
(7684182252467441716151403, 6427982273348055556214818), | ||
(9714261791034259864720451, 6893989422179826088076852), | ||
(8778364618279934631376775, 4307809363333018982642090), | ||
(1084880252167467088321512, 0185883543223812876952786), | ||
(7132961247478246453863699, 3009049310363619763878039), | ||
(6218407357239979422340623, 5393808339651327408011116), | ||
(6662789198148808779794187, 6876144230030984490851411), | ||
(6066182629368283676474477, 9239180335110989069790714), | ||
(8578694408955299065364044, 7425576083659976645795096), | ||
(6602439640990538960712019, 8219976047599490197230297), | ||
(6491398268003297315603712, 0041377903785566085089252), | ||
(1673093931987275027546890, 6903707539413042652315011), | ||
(9480937724504879515095410, 0921645863754710598436791), | ||
(7863916702118749243199570, 0641917969777599028300699), | ||
(1536871371193661495281130, 5876380278410754449733078), | ||
(4078992311553556256114232, 2423255033685442488917353), | ||
(4488991150144064802036906, 8063960672322193204149535), | ||
(4150312888033953605329934, 0368006977710650566631954), | ||
(8123488067321014673905856, 8557934581403627822703280), | ||
(8261657077394832759223284, 5941706525094512325230608), | ||
(2291880205877731971983945, 0180888072429661980811197), | ||
(7715854250201654509041324, 5809786882778948721859617), | ||
(7210783843506918615543566, 2884062257473692284509516), | ||
(2084960398013400172393067, 1666823555245252804609722), | ||
(5350353422647252425087405, 4075591789781264330331690) | ||
]; | ||
const DECIMAL_LENGTH: u128 = 10000000000000000000000000; | ||
|
||
pub fn p0013() -> i128 { | ||
let (mut sum_high, mut sum_low) = (0, 0); | ||
for (high, low) in NUMBERS { | ||
sum_low += low; | ||
sum_high += high + sum_low / DECIMAL_LENGTH; | ||
sum_low %= DECIMAL_LENGTH; | ||
} | ||
return sum_high.to_string()[0..10].parse::<u64>().unwrap().into(); | ||
} |