Cod sursa(job #214881)

Utilizator IrnukIrina Grosu Irnuk Data 16 octombrie 2008 17:02:14
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
/**/  
  
#include<fstream.h>   
#include<string.h>   
  
long A[1000005],n;   
char s[1000005],s1[20];   
long long d,rest;   
ifstream fin("next.in");   
ofstream fout("next.out");   
  
long imparte()   
{   
    long t=0,i;   
    for(i=A[0];i>0;i--)   
    {   
        t=(t*10+A[i])%d;   
    }   
    return t;   
}   
  
int main()   
{   
    long i,trec=0,z;   
  
    fin.getline(s,1000005);   
    fin.getline(s1,20);   
       //   fin>>d;   
    n=strlen(s);   
  
    for(i=n-1;i>=0;i--)   
        A[++A[0]]=s[i]-'0';   
    n=strlen(s1);   
    for(i=0;i<n;i++)   
        d=d*10+s1[i]-'0';   
    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;   
}  
/**/

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

long A[1000005],n;
char s[1000005],s1[20];
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;
}

int main()
{
	long i,trec=0,z;

	fin.getline(s,1000005);
   	fin.getline(s1,20);
       //	fin>>d;
	n=strlen(s);

	for(i=n-1;i>=0;i--)
		A[++A[0]]=s[i]-'0';
	n=strlen(s1);
	for(i=0;i<n;i++)
		d=d*10+s1[i]-'0';
	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;
}