Pagini recente » Cod sursa (job #1013611) | Cod sursa (job #10920) | Cod sursa (job #1865661) | Cod sursa (job #550784) | Cod sursa (job #535965)
Cod sursa(job #535965)
#include<fstream>
#define dmax 1000010
using namespace std;
int a[dmax],b[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--)
{
if (a[i] % d != 0)
if (i-1 != 0)
a[i-1] = (a[i] % d) * 10 + a[i-1]; else
rest = a[i] % d;
a[i] = a[i] % 10;
}
}
void aranjare()
{
long long r = d - rest;
while (r != 0)
{
b[0]++;
b[b[0]] = r % 10;
r = r / 10;
}
}
void adunare()
{
int i,maxcif;
if (rest != 0)
{
maxcif = max(a[0], b[0]);
for (i=1; i<=maxcif; i++)
{
a[i] += b[i];
if (a[i] > 9)
{
a[i+1] += a[i] / 10;
a[i] = a[i] % 10;
}
}
a[0] = maxcif;
if (a[a[0]+1] != 0)
a[0]++;
}
}
void afisare()
{
int i;
ofstream fout("next.out");
for (i=a[0]; i>=1; i--)
fout<<a[i];
fout.close();
}
int main()
{
citire();
impartire();
aranjare();
adunare();
afisare();
return 0;
}