Cod sursa(job #1687899)

Utilizator cyg_w1lddiv3rAndrei Mina cyg_w1lddiv3r Data 13 aprilie 2016 09:46:33
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 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];
char s[NMAX+1];

void printh(int a[])
{
	  for(int i=a[0];i>=1;i--)
			  fout<<a[i];
		fout<<"\n";
}
long long rest_hn_int(int a[],long long k)
{		
	  long long r=0;
	  int i;
	  for(i=a[0];i>=1;i--)
		{
			 r=r*10+a[i];
			 r=r%k;
		}
		return r;
}
void adunh(int a[],int b[])
{
	  int l,i,tr,aux;
	  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>0)
		{
				a[++a[0]]=tr%10;
				tr=tr/10;
		}
}
int main()
{
    long long d,r; 
	  int n,i;
		memset(a,0,sizeof(a));
		fin.getline(s,NMAX+1);
    fin>>d;
    n=strlen(s);
    a[0]=n;
    for(i=n-1;i>=0;i--)
			  a[n-i]=s[i]-'0';
    r=rest_hn_int(a,d);
		if(r>0)
		{
			  d=d-r;
			  int b[20];
			  memset(b,0,sizeof(b));
			  do
				{
					 b[++b[0]]=d%10;
					 d=d/10;
				}while(d>0);
				adunh(a,b);
		}
	  printh(a);
	  fin.close();
	  fout.close();
    return 0;
}