Advertisement
a53

BigFibonacci

a53
Sep 27th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #define NMax 10000
  4. typedef int Huge[NMax+3];
  5.  
  6. void AtribValue(Huge H, unsigned long X) {
  7. H[0] = 0;
  8. while (X) {
  9. ++H[0];
  10. H[H[0]] = X % 10;
  11. X /= 10;
  12. }
  13. }
  14.  
  15. void CopyHuge(Huge A,Huge B) /// A <- B
  16. {
  17. for(int i=0;i<=B[0];++i)
  18. A[i]=B[i];
  19. }
  20.  
  21. void Add(Huge A, Huge B) /// A <- A+B
  22. { int i,T=0;
  23.  
  24. if (B[0]>A[0])
  25. { for (i=A[0]+1;i<=B[0];) A[i++]=0;
  26. A[0]=B[0];
  27. }
  28. else for (i=B[0]+1;i<=A[0];) B[i++]=0;
  29. for (i=1;i<=A[0];i++)
  30. { A[i]+=B[i]+T;
  31. T=A[i]/10;
  32. A[i]%=10;
  33. }
  34. if (T) A[++A[0]]=T;
  35. }
  36.  
  37. void AfisezHuge(Huge A)
  38. {
  39. for(int i=A[0];i>0;--i)
  40. cout<<A[i];
  41. }
  42.  
  43. int main()
  44. {
  45. int n;
  46. cin>>n;
  47. if(n==1||n==2)
  48. {
  49. cout<<1;
  50. return 0;
  51. }
  52. Huge F1,F2,F;
  53. AtribValue(F1,1ULL);
  54. AtribValue(F2,1ULL);
  55. for(int i=3;i<=n;++i)
  56. CopyHuge(F,F1),Add(F,F2),CopyHuge(F1,F2),CopyHuge(F2,F);
  57. AfisezHuge(F);
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement