Pagini recente » Cod sursa (job #58631) | Cod sursa (job #225613) | Cod sursa (job #2434916) | Cod sursa (job #2541102) | Cod sursa (job #322114)
Cod sursa(job #322114)
#include <stdio.h>
#include <string.h>
FILE *f,*s;
char v1[1000003],c[1000003];
long long int m,r;
int i,j,vlen,clen;
long long int rest (char A[], int alen, long long int X)
{
long long int R=0;
for (i=alen;i>0;i--)
R=(10*R+(A[i]-48))%X;
return R;
}
void suma(char x[], int xlen, char y[], int ylen)
{
int T=0,aux;
memset(y + ylen + 1, 0+48, xlen - ylen);
ylen=xlen;
for (i=1;i<=xlen;i++)
{
aux=x[i]-48+y[i]-48+T;
T=aux/10;
aux%=10;
x[i]=aux+48;
}
if (T)
{
x[0]=x[0]+1+48;
x[xlen]=T+48;
}
}
int main()
{
char aux;
f=fopen("next.in","r");
s=fopen("next.out","w");
fscanf(f,"%s\n",&v1);
memmove(v1+1,v1,1000001);
v1[0]=48;
vlen=strlen(v1)-1;
j=vlen;
for(i=1;i<j;i++)
{
aux=v1[i];
v1[i]=v1[j];
v1[j--]=aux;
}
printf("\n\n");
fscanf(f,"%I64d",&m);
r=rest(v1,vlen,m);
m=m-r;
if(r==0)
for(i=vlen;i>0;i--)
fprintf(s,"%c",v1[i]);
else
{
clen=0;
while(m)
{
clen++;
c[clen]=m%10+48;
m=m/10;
}
c[clen+1]='\0';
suma(v1,vlen,c,clen);
for(i=vlen;i>0;i--)
fprintf(s,"%c",v1[i]);
}
fclose(s);
return 0;
}