Pagini recente » Cod sursa (job #1169644) | Cod sursa (job #109821) | Cod sursa (job #2746055) | Cod sursa (job #2142067) | Cod sursa (job #321847)
Cod sursa(job #321847)
#include <stdio.h>
#include <string.h>
FILE *f,*s;
char v1[1000001];
int n[1000001],n2[17];
long long int d,r;
void suma(int A[], int B[])
{ long int i,T=0;
if (B[0]>A[0])
{ for (i=A[0]+1;i<=B[0];) A[i++]=0;
A[0]=B[0];
}
else for (i=B[0]+1;i<=A[0];) B[i++]=0;
for (i=1;i<=A[0];i++)
{ A[i]+=B[i]+T;
T=A[i]/10;
A[i]%=10;
}
if (T) A[++A[0]]=T;
}
void scadere(int A[], int B[])
{ long int i, T=0;
for (i=B[0]+1;i<=A[0];) B[i++]=0;
for (i=1;i<=A[0];i++)
A[i]+= (T=(A[i]-=B[i]+T)<0) ? 10 : 0;
/* Adica A[i]=A[i]-(B[i]+T);
if (A[i]<0) T=1; else T=0;
if (T) A[i]+=10; */
while (!A[A[0]]) A[0]--;
}
long long rest(int A[], long long int B)
{
long int i,t;
for (i = A[0]; i > 0; i--)
t = (t*10 + A[i]) % B;
return t;
}
int main()
{
long int i,j;
f=fopen("next.in","r");
s=fopen("next.out","w");
fgets(v1,1000001,f);
fscanf(f,"%lld",&d);
n[0]=strlen(v1)-1;
j=1;
for(i=n[0]-1;i>=0;i--)
{
n[j]=v1[i]-48;
j++;
}
r=rest(n,d);
i=0;
while(d)
{
n2[++i]=d%10;
d/=10;
}
n2[0]=i;
suma(n,n2);
i=0;
while(r)
{
n2[++i]=r%10;
r/=10;
}
n2[0]=i;
scadere(n,n2);
for(i=n[0];i;i--) fprintf(s,"%d",n[i]);
fclose(s);
return 0;
}