Cod sursa(job #1910592)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 7 martie 2017 17:36:17
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<bits/stdc++.h>
using namespace std;
int n,v1[1005],v2[1005],v3[1005];
void conversie(int v[],int x)
{
    int dv=0;
    while(x)
    {
        v[++dv]=x%10;
        x/=10;
    }
    v[0]=dv;
}
void adunare(int a[],int b[])
{
    int t=0,i;
    for(i=1;i<=a[0] || i<=b[0] || t;i++)
    {
        t=t+a[i]+b[i];
        a[i]=t%10;
        t/=10;
    }
    a[0]=i-1;
}
void inmultire(int a[],int b[])
{
    int c[1005],j,t=0;
    memset(c,0,sizeof(c));
    for(int i=1;i<=a[0];i++)
    {
        for(j=1;j<=b[0] || t;j++)
        {
            t+=c[i+j-1]+a[i]*b[j];
            c[i+j-1]%=10;
            t/=10;
        }
        if((i+j-2)>c[0]) c[0]=i+j-2;
    }
    memcpy(a,c,sizeof(c));
}
int main()
{
    freopen("nunta.in","r",stdin);
    freopen("nunta.out","w",stdout);
    scanf("%d",&n);
    n++;
    conversie(v1,1);
    conversie(v2,1);
    if(n==1 || n==2)
    {
        printf("1\n");
        return 0;
    }
    for(int i=3;i<=n;i++)
    {
        memcpy(v3,v1,sizeof(v1));
        adunare(v3,v2);
        memcpy(v1,v2,sizeof(v2));
        memcpy(v2,v3,sizeof(v3));
    }
    for(int i=v3[0];i>=1;i--) printf("%d",v3[i]);
    return 0;
}