Cod sursa(job #44722)

Utilizator andrei.12Andrei Parvu andrei.12 Data 31 martie 2007 17:45:15
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
#include<string.h>
long long mod(int a[1000005], int c){
	int i;
	long long t=0;
	for (i=a[0];i>0;i--)
		t=(t*10+a[i])%c;
	return t;
}
void adn(int a[1000005], int b[20]){
	int i, t=0;
	for (i=1;i<=a[0] || i<=b[0] ||t; i++,t/=10)
		a[i]=(t+= a[i] + b[i])%10;
	a[0]=i-1;
}
void scrie(int a[1000005]){
	int i;
	for (i=a[0];i>=1;i--)
		printf("%d",a[i]);
}
int main(){
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	int a[1000005], b, i, p, re[20];
	long long d, r;
	char v[1000005];
	scanf("%s%lld",v,&d);
	b=strlen(v);
	for (i=0;i<b;i++)
		a[b-i]=v[i]-'0';
	a[0]=b;
	r=mod(a,d);
	if (r==0) {scrie(a); printf("\n");}
	else {
	r=d-r;
	p=0;
	while (r>0){
		p++;
		re[p]=r%10;
		r=r/10;
	}
	re[0]=p;
	adn(a,re);
	scrie(a);
	printf("\n");
	}
	return 0;
}