Cod sursa(job #214885)

Utilizator IrnukIrina Grosu Irnuk Data 16 octombrie 2008 17:19:17
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
/**/

#include<fstream.h>
#include<string.h>

long A[1005],n;
char s[1005],s1[20],c;
long long d,rest;
ifstream fin("next.in");
ofstream fout("next.out");

long long imparte()
{
	long t=0,i;
	for(i=A[0];i>0;i--)
	{
		t=(t*10+A[i])%d;
	}
	return t;
}
void invers()
{
	long i,aux;
	for(i=1;i<=A[0]/2;i++)
	{
		aux=A[i];
		A[i]=A[A[0]-i+1];
		A[A[0]-i+1]=aux;
	}
}
int main()
{
	long i,trec=0,z,sv,sv1;

	while(fin.get(c))
		if(c!='\n')A[++A[0]]=c-'0';
		else {sv1=sv;sv=A[0];}

	for(i=sv1+1;i<=A[0];i++)
	{
	 d=d*10+A[i];
	 A[i]=0;
	}
	A[0]=A[0]-(A[0]-sv1);

	invers();
	rest=imparte();

	i=1;
	rest=d-rest;
	while(rest!=0)
	{
		z=A[i]+trec+rest%10;
		A[i]=z%10;
		trec=z/10;
		i++;
		rest/=10;
	}
	if(trec!=0)
		A[i]+=trec;
	while(A[i]>9)
	{
	   trec=A[i]/10;
	   A[i]=A[i]%10;
	   A[i+1]=A[i+1]+trec;
	   i++;
	}
		if(i>A[0]) A[0]=i;

	for(i=A[0];i>=1;i--)
		fout<<A[i];
	fout<<'\n';
	
	fout.close();
	return 0;
}