Cod sursa(job #760068)

Utilizator titusuTitus C titusu Data 20 iunie 2012 08:18:31
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cassert>
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
char v[1000005];
int  a[1000005],n;

int main(){
  long long D;
  ifstream fin("next.in");
  ofstream fout("next.out");
  fin.getline(v , sizeof( v ) );
  fin >> D;
  long long
	x = 100000 , y = 250000;
  assert(D >= x && D < y);
  n = 0;
  for(int i=strlen(v)-1 ; i>=0 ; --i){
	assert(v[i]>='0' && v[i] <= '9');
    a[++n] = v[i] - '0';
  }
  a[0] = n;
  while( a[a[0]] == 0 && a[0] > 1 )
	a[0] -- ;
  long long t = 0;
  for(int i = a[0] ; i ; --i)
    t = (10 * t + a[i]) % D;
  if( t ){
	  D = (D - t);
	  cout << D << endl;
	  t = 0 ;
	  int i = 1;
	  while ( D ){
		if( i > a[0] )
		  a[ ++ a[0] ] = 0;
		a[i] += D % 10 + t;
		t = a[i] / 10;
		a[i] %= 10;
		D /= 10;
		i ++ ;
	  }
	  if( t ){
		  if( i > a[0] )
			a[ ++a[0] ] = 0;
		  a[i] += t;
	  }
	  while( a[a[0]] == 0 && a[0] > 1 )
		a[0] --;
  }
  for ( int i = a[0] ; i ; --i )
    fout << a[i];
  //fout << endl;
  return 0;
}