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