Cod sursa(job #43550)

Utilizator crusRus Cristian crus Data 30 martie 2007 11:46:11
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <string.h>
#define input "next.in"
#define output "next.out"
char n[1000030];
long i;
long nr[1000030];
long d,t;
void citire()
{
 FILE *fin;
 fin=fopen(input,"r");
 fscanf(fin,"%s",n);
 fscanf(fin,"%ld",&d);
 fclose(fin);
}
void solve()
{
	long pz=strlen(n);
	for (i=strlen(n)-1;i>=0;i--)
		nr[pz-i]=(int)(n[i]-'0');
	nr[0]=strlen(n);
	d=d;
	t=0;
	for (i=nr[0];i;i--)
		t=(t*10+nr[i])%d;
	if (t==0) d=0;
	   else d-=t;

	nr[1]+=d;
	for (i=2;i<=nr[0];i++)
		{
		 nr[i]+=nr[i-1]/10;
		 nr[i-1]%=10;
		}
	while (nr[nr[0]]>9)
		{
		 nr[0]++;
		 nr[nr[0]]=nr[nr[0]-1]/10;
		 nr[nr[0]-1]%=10;
		}
}
void afisare()
{
	FILE *fout;
	fout=fopen(output,"w");
	for (i=nr[0];i;i--)
		fprintf(fout,"%ld",nr[i]);
	fclose(fout);
}
int main()
{
	citire();
	solve();
	afisare();
	return 0;
}