Cod sursa(job #1483317)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 9 septembrie 2015 06:45:05
Problema Nunta Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<stdlib.h>
short n,*a,*b,*c,i;
void S(short *A,short *B) {
    short i,t=0;
    for(i=1;i<=A[0]||i<=B[0]||t;i++,t/=10)
        A[i]=(t+=A[i]+B[i])%10;
    A[0]=i-1;
}
int main() {
    freopen("nunta.in","r",stdin),freopen("nunta.out","w",stdout),scanf("%hd",&n);
    a=(short*)malloc((n+1)*sizeof(short));
    b=(short*)malloc((n+1)*sizeof(short));
    c=(short*)malloc((n+1)*sizeof(short));
    a[0]=a[1]=b[0]=b[1]=c[0]=1;
    for(i=1;i<n;++i)
    if(i%3==1)
        S(c,a),S(c,a);
    else if(i%3==2)
        S(a,b),S(a,b);
    else
        S(b,c),S(b,c);
    if(n==1)
        printf("1");
    else if(n%3==2)
        for(i=c[0];i;--i)
            printf("%hd",c[i]);
    else if(n%3)
        for(i=b[0];i;--i)
            printf("%hd",b[i]);
    else
        for(i=a[0];i;--i)
            printf("%hd",a[i]);
}