Pagini recente » Cod sursa (job #936498) | Cod sursa (job #2029997) | Cod sursa (job #563409) | Cod sursa (job #1189637) | Cod sursa (job #321880)
Cod sursa(job #321880)
#include <stdio.h>
#include <string.h>
FILE *f,*s;
char v1[1000000];
int n[1000000],c[10000];
long long int m,r,d;
long int i,j;
long long int rest (int A[1000000], long long int X)
{
long long int R=0;
for (i=A[0];i;i--)
R=(10*R+A[i])%X;
return R;
}
void suma(int x[1000000], int y[10000])
{
long long int T=0;
if(y[0]>x[0])
{
for (i=x[0]+1; i<=y[0]; i++) x[i]=0;
x[0]=y[0];
}
else
for (i=y[0]+1; i<=x[0]; i++) y[i]=0;
for (i=y[0]+1; i<=x[0]; i++) y[i]=0;
for (i=1;i<=x[0];i++)
{
x[i]+=y[i]+T;
T=x[i]/10;
x[i]%=10;
}
if (T)
{
x[0]++;
x[x[0]]=T;
}
}
int main()
{
f=fopen("next.in","r");
s=fopen("next.out","w");
fscanf(f,"%s\n",&v1);
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);
d=m-r;
c[0]=0;
while(d)
{
c[0]++;
c[c[0]]=d%10;
d/=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;
}