Cod sursa(job #2079099)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 30 noiembrie 2017 15:48:12
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.2 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("nunta.in");
ofstream g("nunta.out");
vector<int> S(vector<int> a, vector<int> b)
{
    vector<int> c(210);
    int i;
    if(a.at(0)>b.at(0))for(i=1; i<=a.at(0); i++){if(a.at(i)+b.at(i)>=10){  c.push_back(0);
                                                                           c.at(i)=(a.at(i)+b.at(i))%10;
                                                                           if(i==a.at(0)){a.at(0)++;
                                                                                          a.push_back(0);}
                                                                           a.at(i+1)++;}
                                               else {c.push_back(0);
                                                     c.at(i)=a.at(i)+b.at(i);}}
                  else for(i=1; i<=b.at(0); i++){if(a.at(i)+b.at(i)>=10){  c.push_back(0);
                                                                           c.at(i)=(a.at(i)+b.at(i))%10;
                                                                           if(i==b.at(0)){b.at(0)++;
                                                                                          b.push_back(0);}
                                                                           b.at(i+1)++;}
                                               else {c.push_back(0);
                                                             c.at(i)=a.at(i)+b.at(i);}}
    if(a.at(0)>b.at(0))c.at(0)=a.at(0);
               else c.at(0)=b.at(0);
    return c;
}
int main()
{
    vector<int> a(210), b(210), d(210);
    int i, x, N;
    f>>N;
    b.at(1)=1; b.at(0)=1;
    d.at(0)=1; d.at(1)=1;
    for(i=2; i<=N; i++)
            if(i%3==0){b.push_back(0);
                       b=S(a, d);}
                else {if(i%3==1){d.push_back(0);
                                 d=S(a, b);}
                         else {a.push_back(0);
                               a=S(b, d);}}
    if(N%3==0)for(i=b.at(0); i>=1; i--)g<<b.at(i);
            else {if(N%3==1) for(i=d.at(0); i>=1; i--)g<<d.at(i);
                        else for(i=a.at(0); i>=1; i--)g<<a.at(i);}
    return 0;
}