Cod sursa(job #1687884)

Utilizator cyg_mariaGavenea Maria cyg_maria Data 13 aprilie 2016 09:39:23
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int NMAX=1000000;
int a[NMAX+5];
int b[20];
char s[NMAX+1];
void hprint(int v[])
{
	for(int i=v[0];i>=1;i--)
		fout<<v[i];
	fout<<"\n";
}
long long rest_hn_int(int a[],long long k)
{
	long long r;
	int i;
	r=0;
	for(i=a[0];i>=1;i--)
	{
		r=r*10+a[i];
		r=r%k;
	}
	return r;
}
void adunh(int a[],int b[])
{
	int i,tr,aux,l;
	tr=0;
	l=max(a[0],b[0]);
	a[0]=l;
	for(i=1;i<=a[0];i++)
	{
		aux=a[i]+b[i]+tr;
		a[i]=aux%10;
		tr=aux/10;
	}
	while(tr)
	{
		a[++a[0]]=tr%10;
		tr=tr/10;
	}
}
int main()
{
    long long d,r;
    int i,n;
    fin.getline(s,NMAX+1);
    n=strlen(s);
    fin>>d;
    a[0]=n;
    for(i=n-1;i>=0;i--)
		a[n-i]=s[i]-'0';
	r=rest_hn_int(a,d);
	if(r)
	{
		d=d-r;
		memset(b,0,sizeof(b));
		do
		{
			b[++b[0]]=d%10;
			d=d/10;
		}while(d);
		adunh(a,b);
	}
	hprint(a);
	fin.close();
	fout.close();
    
    return 0;
}