Cod sursa(job #536007)

Utilizator nautilusCohal Alexandru nautilus Data 18 februarie 2011 00:02:48
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#define dmax 1000010
using namespace std;

int a[dmax];
long long d,rest;

void citire()
{
 int i;
 char s[dmax];
	
 ifstream fin("next.in");
 
 fin.get(s,dmax); fin.get();
 a[0] = strlen(s);
 for (i=0; i<a[0]; i++)
	 a[a[0] - i] = s[i] - '0';
 
 fin>>d;
 
 fin.close();
}


void impartire()
{
 int i;
	
 for (i=a[0]; i>=1; i--)
	 rest = ((rest * 10) + a[i]) % d;
}


void adunare()
{
 int i=1,t=0;
 long long nr;
 
 nr = (d - rest) % d;
 
 while (nr != 0 || i <= a[0])
	 {
	  a[i] += t + (nr % 10);
	  t = a[i] / 10;
	  a[i] = a[i] % 10;
	  
	  nr = nr / 10;
	  i++;
	 }
 
 a[0] = i-1;
 
 if (t > 0)
	 {
	  a[0]++;
	  a[a[0]] = t;
	 }
}


void afisare()
{
 int i;
	
 ofstream fout("next.out");
 
 for (i=a[0]; i>=1; i--)
	 fout<<a[i];
 
 fout.close();
}


int main()
{
	
 citire();
 impartire();
 adunare();
 afisare();
 
 return 0;
}