Pagini recente » Cod sursa (job #475247) | Cod sursa (job #696234) | Cod sursa (job #1490403) | Cod sursa (job #352067) | Cod sursa (job #3310213)
#include <fstream>
#include <vector>
#include <iomanip>
using namespace std;
const int BAZA = 10;
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 % BAZA;
T /= BAZA;
}
//
if(T) A.push_back(1);
}
void afis(vector<int> &A)
{
g << A.back();
for(int i = A.size() - 2; i >= 0; i--)
g << setw(7) << setfill('0') << A[i];
}
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;
}