fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6.  
  7. unsigned long fib(unsigned n) {
  8. switch (n) {
  9. case 0: return 0;
  10. case 1: return 1;
  11. case 2: return 1;
  12. case 3: return 2;
  13. }
  14. double const phi = (1 + sqrt(5)) / 2.0;
  15. double const chi = 1 - phi;
  16. return round((pow(phi, n) - pow(chi, n)) / (phi - chi));
  17. }
  18. long long sequence (long long A, long long B, unsigned n) {
  19. if(n ==0) {
  20. return A;
  21. }
  22. auto part_a = fib(n-1) * A;
  23. auto part_b = fib (n) * B;
  24. return (n % 2 == 0) ? (part_a - part_b) : (part_b - part_a);
  25. }
  26.  
  27. int main() {
  28. unsigned A = 42;
  29. unsigned B = 21;
  30. long long prev[2] = {A, B};
  31. for(auto it = 2; it < 100; ++it) {
  32. auto control = prev[0] - prev[1];
  33. prev[0] = prev[1];
  34. prev[1] = control;
  35. auto test = sequence (A,B, it);
  36. if (test != control) {
  37. cout << it << ": " << fib (it) << " "
  38. << test << " " << control << endl;
  39. }
  40. }
  41. return 0;
  42. }
Success #stdin #stdout 0s 3096KB
stdin
Standard input is empty
stdout
48: 512559680 114027279786 23832966570
49: 3483774753 51631763253 -38562549963
52: 2886509027 73159269813 163353583029
53: 1776683621 -83923023093 -264311649525
54: 368225352 66887979690 427665232554
55: 2144908973 29577623649 -691976882079
56: 2513134325 37310356041 1119642114633
57: 363076002 -97927045608 -1811618996712
58: 2876210327 -45151224783 2931261111345
59: 3239286329 -52775820825 -4742880108057
60: 1820529360 97818909258 7674141219402
61: 764848393 -60400416867 -12417021327459
62: 2585377753 -22169300307 20091162546861
63: 3350226146 -38231116560 -32508183874320
64: 1640636603 106256129469 52599346421181
65: 695895453 -54292932813 -85107530295501
66: 2336532056 -19839564150 137706876716682
67: 3032427509 -34453368663 -222814407012183
68: 1073992269 104808117729 360521283728865
69: 4106419778 41127140040 -583335690741048
70: 885444751 153875290905 943856974469913
71: 696897234 -22553837628 -1527192665210961
72: 1582341985 -3959497857 2471049639680874
73: 2279239219 -18594339771 -3998242304891835
74: 3861581204 14634841914 6469291944572709
75: 1845853127 -123423494901 -10467534249464544
76: 1412467036 47864023578 16936826194037253
77: 3258320163 9101107911 -27404360443501797
78: 375819904 128957228862 44341186637539050
79: 3634140068 60532505460 -71745547081040847
80: 4009959968 68424723528 116086733718579897
81: 3349132744 -98086531032 -187832280799620744
82: 3064125416 76316941512 303919014518200641
83: 2118290880 -84209158992 -491751295317821385
84: 887449024 70331787456 795670309836022026
85: 3005739904 25847678976 -1287421605153843411
86: 3893188928 44484108480 2083091914989865437
87: 2603961600 -108830741376 -3370513520143708848
88: 2202183168 63120540672 5453605435133574285
89: 511177472 -81756966144 -8824118955277283133
90: 2713360896 -35511124992 -4169019683298694198
91: 3224539136 -46245835776 -4655099271978588935
92: 1642932224 100929067008 486079588679894737
93: 0 -69003153408 -5141178860658483672
94: 0 0 5627258449338378409
95: 0 0 7678306763712689535
96: 0 0 -2051048314374311126
97: 0 0 -8717388995622550955
98: 0 0 6666340681248239829
99: 0 0 3063014396838760832