Pagini recente » Cod sursa (job #1943511) | Cod sursa (job #1078390) | Cod sursa (job #2812373) | Cod sursa (job #2222243) | Cod sursa (job #67998)
Cod sursa(job #67998)
#include<stdio.h>
#include<string.h>
int a[1011],b[1011],d[1011],r[3001];
char c[1002];
int main()
{freopen("sarpe.in","r",stdin);
freopen("sarpe.out","w",stdout);
scanf(" %s ",c);
for(int i=strlen(c)-1, j=1010;i>=0;i--,j--)
a[j]=c[i]-'0';
memcpy(b,a,sizeof(a));
memcpy(d,a,sizeof(a));
b[1010]--;
int i=1010;
while(b[i]==-1)
{b[i]=9;
i--;
b[i]--;}
d[1010]-=2;
i=1010;
while(d[i]<0)
{d[i]=10+d[i];
i--;
d[i]--;}
for(i=1010;i>=0;i--)
for(int j=1010;j>=0;j--)
{r[3000+i-1010+j-1010]+=b[i]*d[j];
r[3000+i-1010+j-1010-1]+=r[3000+i-1010+j-1010]/10;
r[3000+i-1010+j-1010]%=10;}
for(i=3000;i>=0;i--)
{r[i]*=2;}
for(i=3000;i>0;i--)
{r[i-1]+=r[i]/10;
r[i]%=10;}
for(i=1010;i>=0;i--)
{a[i]*=4;}
for(i=1010;i>0;i--)
{a[i-1]+=a[i]/10;
a[i]%=10;}
for(i=1010;i>=0;i--)
{r[2000-10+i]+=a[i];
r[2000-10+i-1]+=r[2000-10+i]/10;
r[2000-10+i]%=10;}
i=2000-10;
while(r[i]/10)
{r[i-1]+=r[i]/10;
r[i]%=10;
i--;}
for(i=0;i<=3000;i++)
if(r[i]) break;
for(;i<=3000;i++)
printf("%d",r[i]);
fclose(stdout);
return 0;}