Pagini recente » Cod sursa (job #990930) | Cod sursa (job #576447) | Cod sursa (job #2689524) | Cod sursa (job #118895) | Cod sursa (job #67872)
Cod sursa(job #67872)
#include<stdio.h>
#include<string.h>
#define Nm 2002
char S[Nm];
int A[Nm],B[Nm],C[Nm];
void read()
{
freopen("sarpe.in","r",stdin);
scanf("%s",S);
}
void solve()
{
int i,j,t;
for(i=strlen(S)-1;i>=0;--i)
A[++A[0]]=B[++B[0]]=S[i]-'0';
if(A[0]==1 && A[1]==1)
return;
for(i=1;!A[i];++i)
A[i]=9;
--A[i];
if(!A[A[0]])
--A[0];
for(i=1;i<=A[0];++i)
for(t=0,j=1;j<=B[0] || t;++j,t/=10)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
C[0]=A[0]+B[0];
if(!C[C[0]])
--C[0];
t=0;
for(i=1;i<=C[0] || t;++i,t/=10)
C[i]=(t+=C[i]<<1)%10;
C[0]=i-1;
t=0;
for(i=1;i<=C[0] || t;++i,t/=10)
C[i]=(t+=C[i]+(i>1?0:4))%10;
C[0]=i-1;
}
void write()
{
int i;
freopen("sarpe.out","w",stdout);
if(B[0]==1 && B[1]==1)
{
printf("1\n");
return;
}
for(i=C[0];i;--i)
printf("%d",C[i]);
printf("\n");
}
int main()
{
read();
solve();
write();
return 0;
}