Cod sursa(job #390238)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 3 februarie 2010 12:45:15
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
int fact[3500],n;
void inmul (int a[3500],int b)
{
    int i;
    int x, t = 0;
    for(i=1;i<=a[0] || t; i++)
    {
        if (i > a[0])
            a[i] = 0;
        x=a[i]*b+t;
        t=x/10;
        a[i]=x%10;
    }
    a[0]=i-1;
}

int main ()
{
    int i;
    freopen("patrate2.in","r",stdin);
    freopen("patrate2.out","w",stdout);
    scanf("%d",&n);
    fact[0]=fact[1]=1;
    for(i=1;i<=n;i++)
        inmul(fact,i);
    n*=n;
    if(n%4==1)
    {
        inmul(fact,2);
        n--;
    }
    if(n%4==2)
    {
        inmul(fact,4);
        n-=2;
    }
    if(n%4==3)
    {
        inmul(fact,8);
        n-=3;
    }
    n/=4;
    for(i=1;i<=n;i++)
        inmul(fact,16);
    for(i=fact[0];i>=1;i--)
        printf("%d",fact[i]);
    printf("\n");
    return 0;
}