Cod sursa(job #759998)

Utilizator titusuTitus C titusu Data 19 iunie 2012 23:04:06
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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;
  assert(D >= 2LL);
  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;
  assert( t >= 0 );
  D = (D - t) % D;
  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[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;
}