Cod sursa(job #2083602)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 7 decembrie 2017 21:26:16
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.87 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("culori3.in");
ofstream g("culori3.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()
{
    long unsigned N, i;
    f>>N;
    vector<int> v1(5001), v2(5001), v3(5001), v4(5001), v5(5001), v6(5001), v7(5001), v8(5001), v9(5001), v10(5001), v(5001);
    v1.at(0)=1; v2.at(0)=1; v3.at(0)=1; v4.at(0)=1; v5.at(0)=1; v1.at(1)=1; v2.at(1)=1; v3.at(1)=1; v4.at(1)=1; v5.at(1)=1;
    for(i=1; i<=N; i++)
        if(i%2==1){v6.push_back(0);
                   v6=v2;
                   v7.push_back(0);
                   v7=S(v1, v3);
                   v8.push_back(0);
                   v8=S(v2, v4);
                   v9.push_back(0);
                   v9=S(v3, v5);
                   v10.push_back(0);
                   v10=v4;}
              else{v1.push_back(0);
                   v1=v7;
                   v2.push_back(0);
                   v2=S(v6, v8);
                   v3.push_back(0);
                   v3=S(v7, v9);
                   v4.push_back(0);
                   v4=S(v8, v10);
                   v5.push_back(0);
                   v5=v9;}
    if(N%2==0) {v=S(v9, v10);
                v=S(v8, v);
                v=S(v7, v);
                v=S(v6, v);}
          else {v=S(v4, v5);
                v=S(v3, v);
                v=S(v2, v);
                v=S(v1, v);}
    for(i=v.at(0); i>=1; i--) g<<v.at(i);
    return 0;
}