Mai intai trebuie sa te autentifici.
Cod sursa(job #1687951)
Utilizator | Data | 13 aprilie 2016 10:06:51 | |
---|---|---|---|
Problema | Next | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.2 kb |
/**
code by purplecoder
*/
#include <fstream>
#include <cstring>
#define maxi(a, b) ( ( a ) > ( b ) ? ( a ) : ( b ) )
using namespace std;
ifstream cin("next.in");
ofstream cout("next.out");
const int MAXN = 1000005;
int n[MAXN];
char b[MAXN];
long long d;
char s[MAXN];
void make_huge()
{
do
{
b[++b[0]] = d % 10;
d = d / 10;
}while(d);
}
void sumh()
{
int tr = 0, aux = 0, l;
l = maxi(n[0], b[0]);
//n[0] = l;
for(int i=1; i<=l; ++i)
{
aux = n[i] + b[i] + tr;
n[i] = aux % 10;
tr = aux / 10;
}
while(tr)
{
n[++n[0]] = tr % 10;
tr /= 10;
}
}
long long rest()
{
long long r = 0;
for(int i=n[0]; i>=1; --i)
r = ( r * 10 + n[i] ) % d;
return r;
}
int main()
{
cin.getline(s, MAXN);
int lg = strlen(s);
n[0] = lg;
for(int i=lg-1; i>=0; --i)
n[lg-i] = s[i] - '0';
cin>>d;
int r = rest();
if(r == 0)
{
for(int i=n[0]; i>=1; --i)
cout<<n[i];
return 0;
}
d = d - r;
make_huge();
sumh();
for(int i=n[0]; i>=1; --i)
cout<<n[i];
return 0;
}