From e78e77b9b90e172706ae026ce0b3e54fb370a454 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 17 Jul 2022 14:10:17 -0500 Subject: [PATCH] Solved Co-authored-by: sigonasr2 --- archives/14/current | Bin 0 -> 15952 bytes archives/14/src/main.c | 50 ++++++++ archives/14/src/utils.h | 7 + current | Bin 21824 -> 15952 bytes sig | 2 +- src/main.c | 277 +++++----------------------------------- 6 files changed, 91 insertions(+), 245 deletions(-) create mode 100755 archives/14/current create mode 100644 archives/14/src/main.c create mode 100644 archives/14/src/utils.h diff --git a/archives/14/current b/archives/14/current new file mode 100755 index 0000000000000000000000000000000000000000..ed41d39e4320d10ad01a6e8bbe0e3226c1855466 GIT binary patch literal 15952 zcmeHOYit}>6~4Q9IZtoWguEabN>dWR6FYINv?XL?d*X3rCnj-3k$~~qyS7*I?wZ|M zVppVf<$`LtDd7iD0e||dm3XK>kT9Z%4TYpZ0y#gZf+$i5335m%Zg|KAHOqJIoU<7Z z>qM#$0%@+a^WF3K?!9y7&hDL^bDy+24o4#qC1sKNm?Ehs=4s+=IMc)xKwRxtt8v_} zwyC9%7i*nok9z>CS1v{8V-4#U0g1PXDpl~ko>~dY2nmU|P}xZXLJ?Ga9>iNh29|?p z@i+y=Ug^&uGK!&(6>KC26hS|ahB8&B&1&kve0+@i>tPfgiNt%2d9N`~aF+WMlz381 z=(C^W8N_931iWKU<4VWvcbcM;ZLgCLjhi^+LxtLtDMGT$ z5AyNi@f4}KuGGcUFEd)Pz=7IdSH<=ybVe2Z{m@nO?_a>bxPYFe&W;{_C#^|ymgg^YM-}e3C~+Iw35Gm8iz@1#(v(Ou;$KNH_3M6 zqxPgVH-0&Svn+0;x;^m|`|KYN+L3AdA_Qyh1_E&cwP`z2BJFr7Lh5nrX2c#pH5V!V zXwtg*h;{Xej{qmEtJ1|RXtR^n)roTm>V`FRa_6V0&zY{<MW68}^9 zJO)2aBwrNLyZCek^wih0_%vW_`pMi{6Z>McW%bhN?=d16!V*Rxj6fKHFalu&!U%*B z2qO?iAdEm5f&X#@B(G5N2qj05auunp@}QEqxSHktoXokIWyx3E%CbD-Y++gQ79|f` z?0>sm&XLQ@oFpi@g=337qU01_V!M8bgy~D3S*>K;#JGV`fN5%q^ARQ2QT*xojSA%{ zQrYN%igCxH@8W^UxJ&GZBu-tVy=^Ru-#^RV`5~@ag_ocDd<||7Z%VZ+amVALmSb#x zn`JoXM*DB5Oo^|3c^WUER)lRsViz;SN@7 z=N0Y0Q3bE}&ou46O8&gGa!LDds@ylCe-o8zdE6@z5JQ}N*sk^XmWcb5sD2RonA%*4 zr&vws*G1PV`F;^S?Te_^ZyUE0Y`+_NL&!etgMMvvvyyo#reV@k4@}~(AN3^kFUdw?Z7_34T~G9;9XBzcpeVS-{(iGh-AQwI+>FyliS7k>CUeff zP_8#I6 z$$_Uk&y_OtF&@V`eC$xCfCCrOd);#!d7B z-Moi`Qo~+{RDM{Q*_@j)2eL(TIG-C%<=s)As<)WNzLa#5Rfn3}>u7#x_rXMAP?^cm zEV}T}&3l&5rSgSzE;~+j()HFeEGc;G{liH$o~ZN zf5+NG#xLtLLFr%CXTk9&z^ApD@MZlb_!9R^W286>U)E7+=;$Y2_+vakL0SL7MHgzr zUp@guo^^_no(sYsWi=W^Vu+myhWLd8X)-yjiepV|=&Z8j z<~OsStVabUPQ<5rkpBX76ccH`^1Hyl53){&i!QoQm>_sB{tp8D9wrF>DllP!?fp2wm-UFCJO|16gYlzv6?GxkUm5Jlc$7r} zxqc%50u?{M%kV6MjpE1{?Eg2=`}xlpo}=KmnI{nJ{~8Q*kH~X}Jm1Ow$DqH+f^UIa z>*LG%xKsxviuifb9a;46z(8|X`j>U9>}QpIt91WS5uRMfZ$U@rFMN6ao7zp@NM7}z zaumMcQjq<86=&Ca52YVzKzJgr0-1EuzpU?K%n$lgU;eU|`)BuxN%#*|G+ssceyq$r zpYMKdu!jfsKG?A8t;A2hSC&I3WB1Y3^Ynm(@`iNei8@wX)vy-FYJ7K}=e6Y?{C@#@ Ccs#%W literal 0 HcmV?d00001 diff --git a/archives/14/src/main.c b/archives/14/src/main.c new file mode 100644 index 0000000..58767cf --- /dev/null +++ b/archives/14/src/main.c @@ -0,0 +1,50 @@ +#include +#include "utils.h" + +/* + The following iterative sequence is defined for the set of positive integers: + + n → n/2 (n is even) + n → 3n + 1 (n is odd) + + Using the rule above and starting with 13, we generate the following sequence: + 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 + + It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1. + + Which starting number, under one million, produces the longest chain? + + NOTE: Once the chain starts the terms are allowed to go above one million. + + + https://projecteuler.net/problem=14 +*/ + +int main(int argc,char**argv) { + int maxChain=0; + long maxNumb=0; + int counter=1; + while (counter<1000000) { + //printf("Calculating %d...\n",counter); + long numb=counter; + int chainCount=0; + while (numb!=1) { + if (numb%2==0) { + numb/=2; + } else { + numb=3*numb+1; + } + chainCount++; + //printf("%d>",numb); + } + if (chainCount>maxChain) { + maxChain=chainCount; + maxNumb=counter; + printf("Max chain is now %d (%d)...\n",maxChain,maxNumb); + } + counter++; + } + printf("\n\nMax chain count is %d for number %d\n",maxChain,maxNumb); + + return 0; +} \ No newline at end of file diff --git a/archives/14/src/utils.h b/archives/14/src/utils.h new file mode 100644 index 0000000..d785fa2 --- /dev/null +++ b/archives/14/src/utils.h @@ -0,0 +1,7 @@ +#define true 1 +#define false 0 +#define boolean char +struct String{ + int length; + char*str; +}; \ No newline at end of file diff --git a/current b/current index 41cece824600aed1c99b97d7c11f436ad19c47c2..ed41d39e4320d10ad01a6e8bbe0e3226c1855466 100755 GIT binary patch literal 15952 zcmeHOYit}>6~4Q9IZtoWguEabN>dWR6FYINv?XL?d*X3rCnj-3k$~~qyS7*I?wZ|M zVppVf<$`LtDd7iD0e||dm3XK>kT9Z%4TYpZ0y#gZf+$i5335m%Zg|KAHOqJIoU<7Z z>qM#$0%@+a^WF3K?!9y7&hDL^bDy+24o4#qC1sKNm?Ehs=4s+=IMc)xKwRxtt8v_} zwyC9%7i*nok9z>CS1v{8V-4#U0g1PXDpl~ko>~dY2nmU|P}xZXLJ?Ga9>iNh29|?p z@i+y=Ug^&uGK!&(6>KC26hS|ahB8&B&1&kve0+@i>tPfgiNt%2d9N`~aF+WMlz381 z=(C^W8N_931iWKU<4VWvcbcM;ZLgCLjhi^+LxtLtDMGT$ z5AyNi@f4}KuGGcUFEd)Pz=7IdSH<=ybVe2Z{m@nO?_a>bxPYFe&W;{_C#^|ymgg^YM-}e3C~+Iw35Gm8iz@1#(v(Ou;$KNH_3M6 zqxPgVH-0&Svn+0;x;^m|`|KYN+L3AdA_Qyh1_E&cwP`z2BJFr7Lh5nrX2c#pH5V!V zXwtg*h;{Xej{qmEtJ1|RXtR^n)roTm>V`FRa_6V0&zY{<MW68}^9 zJO)2aBwrNLyZCek^wih0_%vW_`pMi{6Z>McW%bhN?=d16!V*Rxj6fKHFalu&!U%*B z2qO?iAdEm5f&X#@B(G5N2qj05auunp@}QEqxSHktoXokIWyx3E%CbD-Y++gQ79|f` z?0>sm&XLQ@oFpi@g=337qU01_V!M8bgy~D3S*>K;#JGV`fN5%q^ARQ2QT*xojSA%{ zQrYN%igCxH@8W^UxJ&GZBu-tVy=^Ru-#^RV`5~@ag_ocDd<||7Z%VZ+amVALmSb#x zn`JoXM*DB5Oo^|3c^WUER)lRsViz;SN@7 z=N0Y0Q3bE}&ou46O8&gGa!LDds@ylCe-o8zdE6@z5JQ}N*sk^XmWcb5sD2RonA%*4 zr&vws*G1PV`F;^S?Te_^ZyUE0Y`+_NL&!etgMMvvvyyo#reV@k4@}~(AN3^kFUdw?Z7_34T~G9;9XBzcpeVS-{(iGh-AQwI+>FyliS7k>CUeff zP_8#I6 z$$_Uk&y_OtF&@V`eC$xCfCCrOd);#!d7B z-Moi`Qo~+{RDM{Q*_@j)2eL(TIG-C%<=s)As<)WNzLa#5Rfn3}>u7#x_rXMAP?^cm zEV}T}&3l&5rSgSzE;~+j()HFeEGc;G{liH$o~ZN zf5+NG#xLtLLFr%CXTk9&z^ApD@MZlb_!9R^W286>U)E7+=;$Y2_+vakL0SL7MHgzr zUp@guo^^_no(sYsWi=W^Vu+myhWLd8X)-yjiepV|=&Z8j z<~OsStVabUPQ<5rkpBX76ccH`^1Hyl53){&i!QoQm>_sB{tp8D9wrF>DllP!?fp2wm-UFCJO|16gYlzv6?GxkUm5Jlc$7r} zxqc%50u?{M%kV6MjpE1{?Eg2=`}xlpo}=KmnI{nJ{~8Q*kH~X}Jm1Ow$DqH+f^UIa z>*LG%xKsxviuifb9a;46z(8|X`j>U9>}QpIt91WS5uRMfZ$U@rFMN6ao7zp@NM7}z zaumMcQjq<86=&Ca52YVzKzJgr0-1EuzpU?K%n$lgU;eU|`)BuxN%#*|G+ssceyq$r zpYMKdu!jfsKG?A8t;A2hSC&I3WB1Y3^Ynm(@`iNei8@wX)vy-FYJ7K}=e6Y?{C@#@ Ccs#%W literal 21824 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 -#include #include "utils.h" /* -Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. + The following iterative sequence is defined for the set of positive integers: -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 + n → n/2 (n is even) + n → 3n + 1 (n is odd) -https://projecteuler.net/problem=13 -*/ + Using the rule above and starting with 13, we generate the following sequence: + 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 -char*getSum(char*sum) { - char*newStr=malloc(52+1); - for (int i=0;i<52;i++) { - newStr[i]=sum[i]+'0'; - } - newStr[52]='\0'; - return newStr; -} + It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1. -int main(int argc,char**argv) { - char*vals[]={ - "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", - }; + Which starting number, under one million, produces the longest chain? - //We need up to 52 digits of space for adding 100 50-digit numbers (max sum of one place value converges up to 1000 exclusive meaning we can expect up to 999.) - char sum[52]={}; + NOTE: Once the chain starts the terms are allowed to go above one million. - for (int i=49;i>=0;i--) { - int s=0; - for (int j=0;j<100;j++) { - s+=vals[j][i]-'0'; - printf("s is %d ",s); - } - int marker=i; - printf("\ns starting at %d\n",s); - while (s>0) { - if (s%10+sum[marker+2]<10){ - sum[marker+2]=s%10+sum[marker+2]; + + https://projecteuler.net/problem=14 +*/ + +int main(int argc,char**argv) { + int maxChain=0; + long maxNumb=0; + int counter=1; + while (counter<1000000) { + //printf("Calculating %d...\n",counter); + long numb=counter; + int chainCount=0; + while (numb!=1) { + if (numb%2==0) { + numb/=2; } else { - s+=10*((sum[marker+2]+s%10)/10); - sum[marker+2]=(sum[marker+2]+s%10)%10; + numb=3*numb+1; } - s/=10; - char*val=getSum(sum); - printf("\n...s:%d (%s)",s,val); - free(val); - marker--; + chainCount++; + //printf("%d>",numb); } + if (chainCount>maxChain) { + maxChain=chainCount; + maxNumb=counter; + printf("Max chain is now %d (%d)...\n",maxChain,maxNumb); + } + counter++; } - - char*val=getSum(sum); - printf("\n\nSum is %s",val); - printf("\nFirst ten digits: "); - for (int i=0;i<10;i++) { - printf("%c",val[i]); - } - printf("\n"); - free(val); + printf("\n\nMax chain count is %d for number %d\n",maxChain,maxNumb); return 0; } \ No newline at end of file