Friday, February 18, 2011

10450 - World Cup Noise


#include<stdio.h>
#include<string.h>
#define M 55

char fib[M][1100];

void strRev(char[]);
int longAdd(char[],char[],char[]);

int main()
{
    register int t,n,i;
    //freopen("in.txt","r",stdin);

    strcpy(fib[0],"1");
    strcpy(fib[1],"2");
    strcpy(fib[2],"3");

    for(i=3;i<M;i++)
        longAdd(fib[i],fib[i-2],fib[i-1]);

    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
        scanf("%d",&n);
        printf("Scenario #%d:\n%s\n\n",i,fib[n]);
    }
    return 0;
}


int longAdd(char f[],char f1[],char f2[])
{
    int i,a,b,c=0;
    for(i=0;f1[i]||f2[i];i++)
    {
        a=(f1[i])?f1[i]-48:0;
        b=(f2[i])?f2[i]-48:0;
        f[i]=(a+b+c)%10+48;
        c=(a+b+c)/10;
    }
    if(c)f[i]=c+48;
    strRev(f1);
    return 0;
}


void strRev(char str[])
{
    int i,len=strlen(str),n=len/2;
    for(i=0;i<n;i++)
    {
        str[i]=str[i]^str[len-i-1];   
        str[len-i-1]=str[i]^str[len-i-1];
        str[i]=str[i]^str[len-i-1];
    }
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.