Cod sursa(job #527727)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 1 februarie 2011 01:49:00
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <string>
#define maxn 1000050
#define ll long long

char aux[maxn];
ll D;
int i,N,v[maxn],rest;

void transf()
{
	N=strlen(aux)-1;
	for(i=1;i<=N;i++)
		v[i]=aux[i]-'0';
}

int mod()
{
	int r=0;
	for(i=1;i<=N;i++)
		r=(10*r+v[i])%D;
	return r;
}

void adun(int x)
{
	ll r=x;
	for(i=N;i>=0 && (r>0 || i<N);i--)
	{
		v[i]=v[i]+r;
		r=v[i]/10;
		v[i]=v[i]%10;
	}
	if(v[0]==1)
	{
		N++;
		for(i=N;i;i--)
			v[i]=v[i-1];
	}
}

void afisare()
{
	for(i=1;i<=N;i++)
		printf("%d",v[i]);
}

int main()
{
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	scanf("%s\n",aux+1); aux[0]=' ';
	scanf("%lld",&D);
	transf();
	rest=mod();
	adun(D-rest);
	afisare();
}