Pagini recente » Cod sursa (job #731215) | Monitorul de evaluare | Cod sursa (job #1837032) | Cod sursa (job #2406651) | Cod sursa (job #1909575)
#include <iostream>
#include <fstream>
#include <string.h>
#define Nmax 1000000
typedef unsigned long long int Huge[Nmax+1];
using namespace std;
Huge n;
long long int d;
void Mult(Huge H, unsigned long long int X)
{
int i;
unsigned long long int T=0;
/* H <- H*X */
for (i=1; i<=H[0]; i++)
{
H[i]=H[i]*X+T;
T=H[i]/10;
H[i]=H[i]%10;
}
while (T) /* Cat timp exista transport */
{
H[++H[0]]=T%10;
T/=10;
}
}
unsigned long long int Divide(Huge A, unsigned long long int X)
{
int i;
unsigned long long int 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()
{
ifstream fin ("next.in");
ofstream fout ("next.out");
char cit[1000001];
long long int rest;
fin.getline(cit,1000001);
n[0]=strlen(cit);
for (int i=n[0]-1; i>=0; i--)
n[n[0]-i]=cit[i]-'0';
fin>>d;
rest=Divide(n,d);
if (rest==0)
fout<<cit;
else
{
//for (int i=n[0]; i>=1; i--)
// cout<<n[i];
int T=0;
n[1]+=1;
for (int i=1; i<=n[0]; i++)
{
n[i]+=T;
T=n[i]/10;
n[i]%=10;
}
if (T) n[++n[0]]=T;
Mult(n,d);
for (int i=n[0]; i>=1; i--)
fout<<n[i];
}
return 0;
}