Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <vector>
  4. #define PB push_back
  5. using namespace std;
  6. typedef vector <int> big;
  7. typedef vector <big> BIG;
  8. int n;
  9. big b;
  10. istream& operator>>(istream& stream,big& a){
  11. string s; stream>>s;
  12. for(int i=s.size()-1;i>=0;--i)a.PB(s[i]-'0');
  13. return stream;}
  14. ostream& operator << (ostream& st, big a){
  15. for (int i = a.size() - 1; i >= 0; --i)
  16. st << a[i];
  17. return st;
  18. }
  19. big operator +(big a,big b){
  20. big c; int i,r=0;
  21. for(i=0;i<a.size()||i<b.size()||r;++i){
  22. if(i<a.size())r+=a[i];
  23. if(i<b.size())r+=b[i];
  24. c.push_back(r%10);
  25. r/=10;
  26. }
  27. return c;
  28. }
  29. big operator -(big x,big y){
  30. big z; int i,r=0;
  31. for(i=0;i<x.size();++i){
  32. r+=x[i];
  33. if(i<y.size())r-=y[i];
  34. if(r<0){
  35. z.push_back(r+10);r=-1;
  36. }
  37. else{
  38. z.push_back(r);r=0;
  39. }
  40. }
  41. while(z.back()==0 and z.size()>1)
  42. z.pop_back();
  43. return z;
  44. }
  45. big operator *(big x,int y){
  46. big z;
  47. if(y){
  48. long long r=0;
  49. for(auto e:x){
  50. r+=e*y;z.push_back(r%10);
  51. r/=10;
  52. }
  53. while(r){
  54. z.push_back(r%10);
  55. r/=10;
  56. }
  57. }
  58. else
  59. z.push_back(0);
  60. return z;
  61. }
  62. big operator *(big x,big y){
  63. big z,r(1,0);
  64. for(auto e:x){
  65. r=r+y*e; z.push_back(r[0]); r.erase(r.begin());
  66. }
  67. for(auto e:r)
  68. z.push_back(e);
  69. while(z.back()==0 and z.size()>1)
  70. z.pop_back();
  71. return z;
  72. }
  73. bool operator >(big a,big b){
  74. if(a.size()>b.size())
  75. return true;
  76. if(a.size()<b.size())
  77. return false;
  78. for(int i=a.size()-1;i>=0;--i){
  79. if(a[i]>b[i])
  80. return true;
  81. if(a[i]<b[i])
  82. return false;
  83. }
  84. }
  85. bool operator <(big a,big b){
  86. if(a.size()<b.size())
  87. return true;
  88. if(a.size()>b.size())
  89. return false;
  90. for(int i=a.size()-1;i>=0;--i){
  91. if(a[i]<b[i])
  92. return true;
  93. if(a[i]>b[i])
  94. return false;
  95. }
  96. }
  97.  
  98.  
  99. int main()
  100. {
  101. big sum(1,0),b;
  102. BIG Fibo;
  103. int n, max=0,x;
  104.  
  105. cin >> n;
  106. for (int i=0; i<n;i++)
  107. {
  108. cin >> x;
  109. b.push_back(x);
  110. if (max < b[i]) max = b[i];
  111. }
  112.  
  113. big one(1,1),zero(1,0);
  114. Fibo.resize(max+5,zero);
  115. Fibo[1] = one;
  116. Fibo[0] = zero;
  117. for (int i=2;i<max+1; i++)
  118. {
  119. Fibo[i]=Fibo[i-1]+Fibo[i-2];
  120. }
  121. for (int i=0; i<n; i++)
  122. sum =sum+Fibo[b[i]];
  123. cout << sum;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement