Pagini recente » Cod sursa (job #3315848) | Cod sursa (job #2172101) | Cod sursa (job #890031) | Cod sursa (job #3337388) | Cod sursa (job #3310217)
#include <fstream>
#include <vector>
using namespace std;
int n;
vector<int> A, B;
ifstream f("nunta.in");
ofstream g("nunta.out");
void adunare(vector<int> &A, vector<int> &B) /// A+=B
{
int T = 0;
if(A.size() < B.size()) A.resize(B.size());
else B.resize(A.size());
//
for(unsigned int i = 0; i < A.size(); i++)
{
T += A[i] + B[i];
A[i] = T % 10;
T /= 10;
}
//
if(T) A.push_back(1);
}
void afis(vector<int> &A)
{
for(auto it = B.rbegin(); it != B.rend(); ++it)
g << *it;
}
void fibo()
{
if(n < 3)
{
g << n;
return;
}
//
A.push_back(1);
B.push_back(2);
for(int i = 3; i <= n; i++)
{
adunare(A, B);
A.swap(B);
}
}
int main()
{
f >> n;
fibo();
afis(B);
f.close();
g.close();
return 0;
}