fork download
  1.  
  2. unsigned long long fibb(unsigned long long Solve)
  3. {
  4. if (Solve<=1) return 1;
  5. unsigned long long Even = 0;
  6. unsigned long long Odd = 1;
  7. unsigned long long Loops = (Solve-2)/16+1;
  8. switch (Solve%16/2) {
  9. do {
  10. case 0: Even+=Odd; Odd+=Even;
  11. case 7: Even+=Odd; Odd+=Even;
  12. case 6: Even+=Odd; Odd+=Even;
  13. case 5: Even+=Odd; Odd+=Even;
  14. case 4: Even+=Odd; Odd+=Even;
  15. case 3: Even+=Odd; Odd+=Even;
  16. case 2: Even+=Odd; Odd+=Even;
  17. case 1: Even+=Odd; Odd+=Even;
  18. }while(--Loops);
  19. };
  20. return (Solve&1 ? Odd+Even : Odd);
  21. }
  22. #include <iostream>
  23. int main() {
  24. unsigned long long index;
  25. while(std::cin >> index)
  26. std::cout << "fibb(" << index << ") = " << fibb(index) << '\n';
  27. }
Success #stdin #stdout 4.83s 2888KB
stdin
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
90 91 92 93 
10000000000
stdout
fibb(0) = 1
fibb(1) = 1
fibb(2) = 2
fibb(3) = 3
fibb(4) = 5
fibb(5) = 8
fibb(6) = 13
fibb(7) = 21
fibb(8) = 34
fibb(9) = 55
fibb(10) = 89
fibb(11) = 144
fibb(12) = 233
fibb(13) = 377
fibb(14) = 610
fibb(15) = 987
fibb(16) = 1597
fibb(17) = 2584
fibb(18) = 4181
fibb(19) = 6765
fibb(20) = 10946
fibb(90) = 4660046610375530309
fibb(91) = 7540113804746346429
fibb(92) = 12200160415121876738
fibb(93) = 1293530146158671551
fibb(10000000000) = 16779564715635212573