Cod sursa(job #535949)

Utilizator nautilusCohal Alexandru nautilus Data 17 februarie 2011 22:29:03
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 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--)
	 {
	  if (a[i] % d != 0)
		  if (i-1 != 0)
			  a[i-1] = (a[i] % d) * 10 + a[i-1]; else 
			  rest = a[i] % d;
	 
	  a[i] = a[i] % 10;
	 }
}


void adunare()
{
 int i;
	
 if (rest != 0)
	 {
	  a[1] += d - rest;
	  
	  for (i=1; i<=a[0]; i++)
		  if (a[i] > 9)
			  {
			   a[i+1] += a[i] / 10;
			   a[i] = a[i] % 10;
			  } else
			  break;
	 
	  if (a[a[0] + 1] != 0)
		  a[0]++;
	 }
}


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;
}