Pagini recente » Cod sursa (job #54769) | Cod sursa (job #2001668) | Cod sursa (job #1771328) | Cod sursa (job #2590914) | Cod sursa (job #832085)
Cod sursa(job #832085)
#include <stdio.h>
#include <string.h>
unsigned long v[1000051], j;
long long d;
char s[1000001];
int i;
void Add(unsigned long A[1000051], long long B)
/* A <- A+B */
{ int i = 1,T=0;
A[i]+=B+T;
T=A[i]/10;
A[i]%=10;
if (T)
{
A[++i] += T%10;
T /= 10;
}
if ( i > A[0] )
A[0] = i;
}
unsigned long Divide(unsigned long A[1000051], long long X)
/* A <- A/X */
{ int i;
unsigned long R=0;
for (i=A[0];i;i--)
{ A[i]=(R=10*R+A[i])/X;
R%=X;
}
while (!A[A[0]] && A[0]>1) A[0]--;
return R;
}
int main ()
{
FILE *fis = fopen ("next.in" ,"r");
i = 0;
//fscanf(fis, "%c", &c);
fgets(s, 1000000, fis);
i = j = strlen(s) - 2;
while ( s[i] != '\n' && i >= 0 )
{
v[0] ++;
v[j-i+1] = s[i] - '0';
i --;
}
fscanf(fis, "%I64d", &d);
fclose(fis);
long long a = Divide(v, d);
i = j = strlen(s) - 2;
v[0]=0;
while ( s[i] != '\n' && i >= 0 )
{
v[0] ++;
v[j-i+1] = s[i] - '0';
i --;
}
a = d - a;
Add(v, a);
FILE *fis2 = fopen ("next.out", "w");
for ( i = v[0]; i >= 1; i -- )
fprintf(fis2, "%d", v[i]);
fclose(fis2);
return 0;
}