Pagini recente » Cod sursa (job #1716796) | Cod sursa (job #1083229) | Cod sursa (job #1215615) | Cod sursa (job #1033759) | Cod sursa (job #1715500)
#include<iostream>
#include<fstream>
#include<vector>
#define base 10
using namespace std;
typedef vector<char> bigint;
istream &operator >> (istream &f , bigint & x)
{
int i;
x.clear();
string s;
f>>s;
for(i=0;i<s.size();i++)
x.push_back(s[i]-'0');
return f;
}
ostream &operator << (ostream &g, bigint &x)
{
for(int i=0;i<x.size();i++)
g<<(int)x[i];
return g;
}
bigint operator + (const bigint &a, const bigint &b)
{
int t=0;
bigint x(a),y(b), z(max(a.size(),b.size()),0);
if(x.size()<y.size()) x.insert(x.begin(),y.size()-x.size(),0);
if(y.size()<x.size()) y.insert(y.begin(),x.size()-y.size(),0);
for(int i=0;i<z.size();i++){
z[i]=x[i]+y[i];
//cout<<z[i];
}
for(int i=z.size()-1;i>=0;i--)
{
z[i]+=t;
t=z[i]/base;
z[i]=z[i]%base;
}
// cout<<t<<"\n";
while(t!=0)
{
z.insert(z.begin(),1,0);
z[0]=t%base;
t/=base;
}
return z;
}
int main()
{
int n;
bigint a,b,y;
ifstream cin("nunta.in");
ofstream cout("nunta.out");
cin>>n;
if(n<4)
cout<<n;
else
{
a.push_back(2);
b.push_back(3);
for(int i=4;i<=n;i++)
{
y=a+b;
a=b;
b=y;
}
cout<<b;
}
return 0;
}