Cod sursa(job #227273)

Utilizator crisy_girlpop cristina crisy_girl Data 3 decembrie 2008 23:33:20
Problema Patrate2 Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
int N,J,A[10000000],M,Z;

void inmulteste(int k,int l)
{
     int d=0,r=0;
     for (int i=1; i<=J; ++i)
     {
         d=A[i]*k+r;
         r=d / 10;
         if (l!=0) A[i+l]+=d % 10;
         else A[i]=d%10;
     }
     if (r!=0) {++J; A[J]+=r;}
}

int main()
{
    freopen("patrate2.in","r",stdin);
    freopen("patrate2.out","w",stdout);
    scanf("%d",&N);
    M=N*N;
    A[1]=1;J=1;
    for (int i=1; i<=M; ++i)
    {
        inmulteste(2,0);
    }
    for (int i=2; i<=N; ++i)
    {
        int d=i, l=0, t=i;
        while (d / 10> 0)
        {
              t= t % 10;
              if (d!=i) ++l;
              if (t!=0) inmulteste (t,l);
              else ++Z;
              d=d / 10;
        }
        if (d!=i) ++l;
        inmulteste(t%10, l);
    }
    for (int i=J; i>=1; --i)
        printf("%d", A[i]);
    for (int i=1; i<=Z; ++i)
        printf("%d", 0);
    return 0;
}