Cod sursa(job #45006)

Utilizator andrei.12Andrei Parvu andrei.12 Data 31 martie 2007 21:59:57
Problema Next Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#define max 1000005
int a[max], p, re[20], r, aux;
long long d;
long long  mod(int a[max], int b){
	int i;
	long long t=0;
	for (i=a[0];i>0;i--)
		t=(t*10+a[i])%b;
	return t;
}

void adn(int a[max], 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[max]){
	int i;
	for (i=a[0];i>0;i--)
		printf("%d",a[i]);
}
int main(){
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	int j;
	char x;
	p=0;
	scanf("%c",&x);
	while (x!='\n'){
		p++;
		a[p]=x-'0';
		scanf("%c",&x);
	}
	for (j=1;j<=p/2;j++){
		aux=a[j];
		a[j]=a[p-j+1];
		a[p-j+1]=aux;
	}
	a[0]=p;
	scanf("%lld",&d);
	r=mod(a,d);
	r=(d-r)%d;
	p=0;
	while (r>0){
		p++;
		re[p]=r%10;
		r=r/10;
	}
	re[0]=p;
	adn(a,re);
	scrie(a);
	printf("\n");
	fclose(stdin);
	fclose(stdout);
	return 0;
}