Pagini recente » Cod sursa (job #1949419) | Cod sursa (job #811492) | Cod sursa (job #2038314) | Cod sursa (job #2582270) | Cod sursa (job #1523002)
#include <cstdio>
#include <cctype>
#define BUF_SIZE 4096
#define MAXN 1000000
int pos=BUF_SIZE, poz=0, a[MAXN];
char buf[BUF_SIZE], buf2[BUF_SIZE];
FILE *fin, *fout;
inline char nextch(){
if(pos==BUF_SIZE){
fread(buf, BUF_SIZE, 1, fin);
pos=0;
}
return buf[pos++];
}
inline long long read(){
long long x=0;
char ch=nextch();
while(!isdigit(ch)){
ch=nextch();
}
while(isdigit(ch)){
x=10*x+ch-'0';
ch=nextch();
}
return x;
}
inline void putch(char ch){
buf2[poz++]=ch;
if(poz==BUF_SIZE){
fread(buf2, BUF_SIZE, 1, fout);
poz=0;
}
}
inline void citeste(int a[]){
char ch=nextch();
while(ch!='\n'){
a[++a[0]]=ch-'0';
ch=nextch();
}
}
inline void reverse(int a[]){
int i, j, aux;
for(i=1, j=a[0]; i<j; i++, j--){
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
inline long long rest(int a[], long long d){
long long tr=0;
for(int i=a[0]; i>0; i--){
tr=(tr*10)+a[i];
while(tr>=d){
tr-=d;
}
}
return tr;
}
inline void adun(int a[], long long b){
long long tr=b, i=1;
while(tr>0){
tr+=a[i];
a[i]=tr%10;
tr/=10;
i++;
}
i--;
if(i>a[0]){
a[0]=i;
}
}
inline void afisez(int a[]){
for(int i=a[0]; i>0; i--){
putch(a[i]+'0');
}
if(poz>0){
fwrite(buf2, poz, 1, fout);
}
}
int main(){
long long r, d;
fin=fopen("next.in", "r");
fout=fopen("next.out", "w");
citeste(a);
reverse(a);
d=read();
r=rest(a, d);
if(r!=0){
adun(a, d-r);
}
afisez(a);
fclose(fin);
fclose(fout);
return 0;
}