Pagini recente » Cod sursa (job #982209) | Cod sursa (job #877068) | Cod sursa (job #2834175) | Cod sursa (job #2456718) | Cod sursa (job #759983)
Cod sursa(job #759983)
#include <cassert>
#include <fstream>
#include <cstring>
using namespace std;
char v[1000005];
int a[1000005],n;
int main(){
long long D;
ifstream fin("next.in");
ofstream fout("next.out");
fin.getline(v,sizeof(v));
fin>>D;
assert(D>=2LL);
n = 0;
for(int i=strlen(v)-1;i>=0;--i){
assert(v[i]>='0' && v[i] <= '9');
a[++n]=v[i]-'0';
}
a[0]=n;
while( a[a[0]]==0 && a[0]>1 )
a[0]--;
long long t=0;
for(int i=a[0];i;--i)
t = (10*t+a[i])%D;
assert(t>=0);
if(t==0)
D = 0;
else
D -= t;
t= 0 ;
int i = 0;
while (D){
if(i+1>a[0])
a[0]++;
i++;
int tmp = a[i]+D%10+t;
a[i] = tmp % 10;
t = tmp / 10;
D /= 10;
}
while(t){
if(i+1>a[0])
a[0]++;
a[++i] += t%10, t /= 10;
}
while( a[a[0]]==0 && a[0]>1 )
a[0]--;
for(int i=a[0];i;--i)
fout<<a[i];
fout<<endl;
return 0;
}