Pagini recente » Cod sursa (job #1548680) | Cod sursa (job #2977543) | Cod sursa (job #52451) | Cod sursa (job #670717) | Cod sursa (job #322048)
Cod sursa(job #322048)
#include <stdio.h>
#include <string.h>
FILE *f,*s;
char v1[1000002],c[1000002];
long long int m,r;
int i,j;
long long int rest (char A[], long long int X)
{
long long int R=0;
for (i=A[0]-48;i;i--)
R=(10*R+(A[i]-48))%X;
return R;
}
void suma(char x[], char y[])
{
int T=0,aux;
memset(y + (y[0]-48) + 1, 0+48, (x[0]-48) - (y[0]-48));
for (i=1;i<=x[0]-48;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[x[0]-48]=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]=strlen(v1)-1+48;
j=v1[0]-48;
for(i=1;i<j;i++)
{
aux=v1[i];
v1[i]=v1[j];
v1[j--]=aux;
}
fscanf(f,"%lld",&m);
r=rest(v1,m);
m=m-r;
if(r==0)
for(i=v1[0]-48;i>0;i--)
fprintf(s,"%c",v1[i]);
else
{
c[0]=0+48;
while(m)
{
c[0]++;
c[c[0]-48]=m%10+48;
m=m/10;
}
c[c[0]-48+1]='\0';
suma(v1,c);
for(i=v1[0]-48;i>0;i--)
fprintf(s,"%c",v1[i]);
}
/*
n[0]=strlen(v1);
j=1;
for(i=n[0]-1;i>=0;i--)
{
n[j]=v1[i]-48;
j++;
}
fscanf(f,"%lld",&m);
r=rest(n,m);
m=m-r;
c[0]=0;
while(m)
{
c[0]++;
c[c[0]]=m%10;
m/=10;
}
if(r==0)
{
for(i=n[0];i>0;i--)
fprintf(s,"%d",n[i]);
}
else
{
suma(n,c);
for(i=n[0];i>0;i--)
fprintf(s,"%d",n[i]);
}
*/
fclose(s);
return 0;
}