Cod sursa(job #212401)

Utilizator cnatlLaurian cnatl Data 5 octombrie 2008 12:49:01
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<string.h>
#define N 1000010
char n[N];
long long k,i,j,m,ln;
void citire(), modulo(), adunare(), scadere();
int main()
{	citire();
	modulo();
	if(!m) { printf("%s",n); return 0;}
	scadere();
	adunare();
	if(n[0]=='0') printf("1");
	printf("%s",n);
	printf("\n");
	return 0;
}
void citire()
{	freopen("next.in","r",stdin); freopen("next.out","w",stdout);
	scanf("%s",n);
	scanf("%lld",&k);
}
void modulo()
{	m=(long long int)(n[0]-'0');ln=strlen(n);
	for(i=1;i<ln;i++){ m=m*10+(long long int)(n[i]-'0'); m%=k;}
}
void scadere()
{	k-=m;
}
void adunare()
{	i=ln-1;
while(k) {      n[i]+=(char)(k%10); k/=10; 
if(n[i]>'9') { n[i-1]++; n[i]-=10;} i--; 
			}
while(n[i]>'9'){ n[i-1]++; n[i]-=10; i--;}
}