Pagini recente » Cod sursa (job #858883) | Cod sursa (job #1188229) | Cod sursa (job #203875) | Cod sursa (job #3251574) | Cod sursa (job #482197)
Cod sursa(job #482197)
#include <stdio.h>
using namespace std;
#define MAX 1000005
char ch;
int n[MAX], r[MAX];
long long d, rest, j;
int i;
void afisare (int nr[])
{
FILE *g = fopen ("next.out","w");
for (i=nr[0]; i>=1; --i)
fprintf (g, "%d", nr[i]);
fprintf (g, "\n");
}
long long mod_nr_mic (int nr[], long long x)
{
long long t = 0;
for (i=nr[0]; i>=1; --i)
t = (t * 10 + nr[i]) % x;
return t;
}
void adunare (int nr1[], int nr2[])
{
int suma_cf = 0, suma_tr = 0, cf = 0;
for (i=1; i<=nr1[0] || i<=nr2[0]; ++i, ++cf)
{
suma_cf = nr1[i] + nr2[i] + suma_tr;
nr1[i] = suma_cf % 10;
suma_tr = suma_cf / 10;
}
if (suma_tr)
{
nr1[i] = suma_tr;
cf ++;
}
nr1[0] = cf;
}
int is_number (char ch)
{
if (ch >= '0' && ch <= '9')
return 1;
return 0;
}
int main ()
{
FILE *f = fopen ("next.in","r");
fscanf (f,"%c", &ch);
while (ch != ' ' && ch != '\n')
{
if (is_number (ch))
{
n[0] ++;
n[n[0]] = ch - '0';
}
fscanf (f,"%c", &ch);
}
for (i=1; i<=n[0]/2; ++i)
{
j = n[i];
n[i] = n[n[0]-i+1];
n[n[0]-i+1] = j;
}
fscanf (f,"%lld", &d);
rest = mod_nr_mic (n, d);
j = (d - rest ) % d;
while (j)
{
r[0] ++;
r[r[0]] = j % 10;
j /= 10;
}
adunare (n, r);
afisare (n);
fclose (f);
return 0;
}