Cod sursa(job #295661)

Utilizator funkydvdIancu David Traian funkydvd Data 3 aprilie 2009 16:24:49
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream f1 ("next.in");
ofstream f2 ("next.out");
int v[1000001],v2[17],vf[1000001];
long long mod(int v[1000001], long long b)
{
      long long i, t = 0;
      for (i = 1; i<=v[0]; i++)
              t = (t*10 + v[i]) % b;
      return t;
}
void suma()
 {  
       int i, t = 0;  
       for (i=1; i<=vf[0] || i<=v2[0]||t ; i++, t/=10)  
               vf[i] = (t += vf [i] + v2[i]) % 10;  
       vf[0] = i-1;
}  
int main()
{

	long long d,t;
	int i;
	char c;
	i=0;
	while (f1.get(c) && int(c)>=48) {i++; v[i]=int(c)-48;}
	v[0]=i;
	f1>>d;
    t=mod(v,d);
	t=d-t;
	if (t==d) for (i=1; i<=v[0]; i++) f2<<v[i];
	 else {
		 i=1;
		 while (t!=0) {v2[i]=t%10; t/=10; i++;}
		 v2[0]=i-1;
		 for (i=1; i<=v[0]; i++) vf[i]=v[v[0]-i+1];
		suma();
		 for (i=vf[0]; i>=1; i--) f2<<vf[i];
	 }
	return 0;
}