Pagini recente » Cod sursa (job #2253267) | Cod sursa (job #640588) | Cod sursa (job #1231583) | Cod sursa (job #2253305) | Cod sursa (job #44701)
Cod sursa(job #44701)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define cmax 1000005
using namespace std;
char ch;
int a[cmax],b[cmax],n,d;
int cifra(char x) {
if(x >= '0' && x <= '9') return 1;
else return 0;
}
int rest(int a[],int r) {
int i,t = 0;
for(i = a[0]; i >= 1; i--) t = (t * 10 + a[i]) % r;
return t;
}
void put(int a[],int v) {
memset(a,0,sizeof(a));
do {
a[++a[0]] = v % 10;
v /= 10;
} while(v > 0);
}
void show(int a[]) {
for(int i = a[0]; i >= 1; i--) printf("%d",a[i]);
printf("\n");
}
void add(int a[],int b[]) {
int i,t = 0;
for(i = 1; i <= a[0] || i <= b[0] || t > 0; i++) {
t += a[i] + b[i];
a[i] = t % 10;
t /= 10;
if(i > a[0]) a[0] = i;
}
}
int main() {
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
while(1) {
scanf("%c",&ch);
if(cifra(ch)) a[++a[0]] = int(ch - '0');
else break;
}
reverse(a + 1, a + a[0] + 1);
scanf("\n");
scanf("%d",&d);
int r = rest(a,d);
d -= r;
if(d > 0) {
put(b,d);
add(a,b);
}
show(a);
return 0;
}