Pagini recente » Cod sursa (job #3261983) | Cod sursa (job #1285411) | Cod sursa (job #608807) | Cod sursa (job #532201) | Cod sursa (job #535998)
Cod sursa(job #535998)
#include<fstream>
#define dmax 1000010
using namespace std;
int a[dmax];
long long d,rest;
void citire()
{
int i;
char s[dmax];
ifstream fin("next.in");
fin.get(s,dmax); fin.get();
a[0] = strlen(s);
for (i=0; i<a[0]; i++)
a[a[0] - i] = s[i] - '0';
fin>>d;
fin.close();
}
void impartire()
{
int i;
for (i=a[0]; i>=1; i--)
rest = ((rest * 10) + a[i]) % d;
}
void adunare()
{
int i,t=0;
long long nr;
nr = d - rest;
for (i=1; i<=a[0]; i++)
{
a[i] += (nr % 10) + t;
nr = nr / 10;
t = 0;
if (a[i] > 9)
{
t = a[i] / 10;
a[i] = a[i] % 10;
}
}
while (nr != 0)
{
a[0]++;
a[a[0]] = nr % 10;
if (t != 0)
{
a[a[0]] += t;
t=0;
if (a[a[0]] > 9)
{
t = a[a[0]] / 10;
a[a[0]] = a[a[0]] % 10;
}
}
nr = nr / 10;
}
if (t != 0)
{
a[0]++;
a[a[0]] = t;
}
}
void afisare()
{
int i;
ofstream fout("next.out");
for (i=a[0]; i>=1; i--)
fout<<a[i];
fout.close();
}
int main()
{
citire();
impartire();
adunare();
afisare();
return 0;
}