Cod sursa(job #535994)

Utilizator nautilusCohal Alexandru nautilus Data 17 februarie 2011 23:23:29
Problema Next Scor 80
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,t=0;
 long long nr;
 
 nr = d - rest;
 
 for (i=1; i<=a[0]; i++)
	 {
	  a[i] += (nr % 10) + t;
	  nr = nr / 10;
	  t = 0;
	  if (a[i] > 9)
		  {
		   t = a[i] / 10;
		   a[i] = a[i] % 10;
		  }
	 }
 
 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;
}