Monday, April 18, 2011

11955 - Binomial Theorem

#include<stdio.h>
#define M 100000

char inp[105],a[105],b[105];
long long bin[51][51];

int main()
{
    int t,i,j,k,n,p,q;
    //freopen("in.txt","r",stdin);

    for(i=0;i<51;i++)
        bin[i][0]=bin[i][i]=1;

    for(i=2;i<51;i++)
        for(j=0;j<=i;j++)
            bin[i][j]=bin[i-1][j-1]+bin[i-1][j];

    scanf("%d\n",&t);
    for(k=1;k<=t;k++)
    {
        gets(inp);
        p=q=n=0;

        for(i=1;inp[i]!='+';i++)
            a[p++]=inp[i];
        a[p]='\0',p=0;

        for(i++;inp[i]!=')';i++)
            b[p++]=inp[i];
        b[p]='\0';

        for(i+=2;inp[i];i++)
            n=n*10+inp[i]-48;

        if(n==0)
        {
            printf("Case %d: 1\n",k);
            continue;
        }
        else if(n==1)
        {
            printf("Case %d: %s+%s\n",k,a,b);
            continue;
        }

        p=n-1,q=1;
        printf("Case %d: %s^%d+",k,a,n);
        for(i=1;i<n;i++)
        {
            if(p>1&&q>1)
                printf("%lld*%s^%d*%s^%d+",bin[n][i],a,p,b,q);
            else if(p>1 && q==1)
                printf("%lld*%s^%d*%s+",bin[n][i],a,p,b);
            else if(p==1&&q>1)
                printf("%lld*%s*%s^%d+",bin[n][i],a,b,q);
            else
                printf("%lld*%s*%s+",bin[n][i],a,b);
            p--;q++;
        }
        printf("%s^%d\n",b,n);
    }
    return 0;
}

No comments:

Post a Comment

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