Cod sursa(job #678742)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 februarie 2012 12:20:02
Problema Sarpe Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<cstdio>
#include<cstring>
char s[1003];
int i,v[2003],u[2003],z[2003],t,j;
int main()
{FILE *f=fopen("sarpe.in","r"),*g=fopen("sarpe.out","w");
fgets(s,1001,f);
v[0]=strlen(s)-1,z[0]=1,z[1]=4;
for(i=1;i<=v[0];i++)
     v[i]=s[v[0]-i]-'0';
for(i=1;i<=v[0];i++)
     {for(t=0,j=1;j<=v[0]||t;j++,t/=10)
           u[i+j-1]=(t+=u[i+j-1]+v[i]*v[j])%10;
     if(i+j-2>u[0])
           u[0]=i+j-2;}
for(t=0,i=1;i<=u[0];i++)
     u[i]-=((i<=v[0])?v[i]:0)+t,u[i]+=(t=u[i]<0)*10;
for(;u[0]>1&&!u[u[0]];u[0]--);
for(t=0,i=1;i<=u[0]||t;i++,t/=10)
     u[i]=(t+=u[i]*2)%10;
u[0]=i-1;
for(t=0,i=1;i<=u[0]||i<=z[0]||t;i++,t/=10)
     u[i]=(t+=u[i]+z[i])%10;
u[0]=i-1;
if(v[0]==1&&v[1]==1)
     fprintf(g,"2");
else
     for(i=u[0];i;i--)
           fprintf(g,"%d",u[i]);
return 0;}