Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #define PB push_back
- using namespace std;
- typedef vector <int> big;
- typedef vector <big> BIG;
- int n;
- big b;
- istream& operator>>(istream& stream,big& a){
- string s; stream>>s;
- for(int i=s.size()-1;i>=0;--i)a.PB(s[i]-'0');
- return stream;}
- ostream& operator << (ostream& st, big a){
- for (int i = a.size() - 1; i >= 0; --i)
- st << a[i];
- return st;
- }
- big operator +(big a,big b){
- big c; int i,r=0;
- for(i=0;i<a.size()||i<b.size()||r;++i){
- if(i<a.size())r+=a[i];
- if(i<b.size())r+=b[i];
- c.push_back(r%10);
- r/=10;
- }
- return c;
- }
- big operator -(big x,big y){
- big z; int i,r=0;
- for(i=0;i<x.size();++i){
- r+=x[i];
- if(i<y.size())r-=y[i];
- if(r<0){
- z.push_back(r+10);r=-1;
- }
- else{
- z.push_back(r);r=0;
- }
- }
- while(z.back()==0 and z.size()>1)
- z.pop_back();
- return z;
- }
- big operator *(big x,int y){
- big z;
- if(y){
- long long r=0;
- for(auto e:x){
- r+=e*y;z.push_back(r%10);
- r/=10;
- }
- while(r){
- z.push_back(r%10);
- r/=10;
- }
- }
- else
- z.push_back(0);
- return z;
- }
- big operator *(big x,big y){
- big z,r(1,0);
- for(auto e:x){
- r=r+y*e; z.push_back(r[0]); r.erase(r.begin());
- }
- for(auto e:r)
- z.push_back(e);
- while(z.back()==0 and z.size()>1)
- z.pop_back();
- return z;
- }
- bool operator >(big a,big b){
- if(a.size()>b.size())
- return true;
- if(a.size()<b.size())
- return false;
- for(int i=a.size()-1;i>=0;--i){
- if(a[i]>b[i])
- return true;
- if(a[i]<b[i])
- return false;
- }
- }
- bool operator <(big a,big b){
- if(a.size()<b.size())
- return true;
- if(a.size()>b.size())
- return false;
- for(int i=a.size()-1;i>=0;--i){
- if(a[i]<b[i])
- return true;
- if(a[i]>b[i])
- return false;
- }
- }
- int main()
- {
- big sum(1,0),b;
- BIG Fibo;
- int n, max=0,x;
- cin >> n;
- for (int i=0; i<n;i++)
- {
- cin >> x;
- b.push_back(x);
- if (max < b[i]) max = b[i];
- }
- big one(1,1),zero(1,0);
- Fibo.resize(max+5,zero);
- Fibo[1] = one;
- Fibo[0] = zero;
- for (int i=2;i<max+1; i++)
- {
- Fibo[i]=Fibo[i-1]+Fibo[i-2];
- }
- for (int i=0; i<n; i++)
- sum =sum+Fibo[b[i]];
- cout << sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement