Cod sursa(job #295893)

Utilizator funkydvdIancu David Traian funkydvd Data 3 aprilie 2009 19:13:17
Problema Next Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;
ifstream f1 ("next.in");
ofstream f2 ("next.out");
int v[1000001],v2[18],vf[1000001];
long long mod(int v[1000001], long long b)
{
      int i; 
	  long long 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;  
}  
int main()
{

	int i;
	long long d,t,x;
	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;
	i=1;
	while (t!=0) {v2[i]=t%10; t/=10; i++;}
	v2[0]=i-1;
	if (t==d)  for (i=1; i<=v[0]; i++) f2<<v[i]; 
	else {
		 for (i=1; i<=v[0]; i++) vf[i]=v[v[0]-i+1];
		 x=v[0];
		suma();
        if (x<v2[0]) x=v2[0];
		if (vf[x+1]>0) f2<<vf[x+1];
		for (i=x; i>=1; i--) f2<<vf[i];
	 }
	return 0;
}