Cod sursa(job #610625)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 28 august 2011 12:42:32
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<iostream>
using namespace std;
int n,A[1000005];
long long D;
char s[1000005];

void Citire()
{
	int i;
	ifstream fin("next.in");
	fin>>s;
	fin>>D;
	fin.close();
	
	n=strlen(s);
	for(i=1;i<=n;i++)
		A[i]=s[i-1]-'0';
}

long long Rest()
{
	int i;
	long long r=0;
	for(i=1;i<=n;i++)
		r=(r*10+A[i])%D;
	return r;
}

void Aduna(long long x)
{
	int i,r=0,aduna;
	for(i=n;i>0 && x;i--)
	{
		aduna=r+A[i]+x%10;
		A[i]=aduna%10;
		r=aduna/10;
		x=x/10;
	}
	aduna=A[i]+r;
	A[i]=aduna%10;
	r=aduna/10;
	if(r)
		A[i-1]=r;
}

void Rezolvare()
{
	long long rest;
	rest=Rest();
	if(rest)
	{
		rest=D-rest;
		rest=rest%D;
		Aduna(rest);
	}
}

void Afisare()
{
	ofstream fout("next.out");
	int i;
	if(A[0]) i=0;
		else i=1;
	for(;i<=n;i++)
		fout<<A[i];
	fout.close();
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}