Cod sursa(job #527585)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 31 ianuarie 2011 21:53:32
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
# include <fstream>
  using namespace std;
    std :: ifstream f ("next.in");
	std :: ofstream g ("next.out");
	char c;
	short a[1000010];
	int l;
	long long nn;
	long long D;
	inline bool cifra (char c){
		if (c >= '0' && c <= '9') return true;
		return false;
	}
	int mod (short A[], short B){
        int i, t = 0;
        for (i = l; i > 0; i--)
			t = (t * 10 + A[i]) % B;
        return t;
    }
	void suma (short A[], short B[]){
        int i, t = 0;
        for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
            A[i] = (t += A[i] + B[i]) % 10;
        l = i - 1;
    }
	short x[30];
	int main (){
		while (cifra (c = f.get ())){
			a[++l] = c - '0';
		}
		for (int i = 1, lim = (l >> 1); i <= lim; ++i){
			int x = a[i];
            a[i] = a[l - i + 1];
			a[l - i + 1] = x;
		}
		f >> D;
		nn = mod (a, D);
		nn = D - nn;
		while (nn){
			x[++x[0]] = nn % 10;
			nn = nn / 10;
		}
		suma (a, x);
		for (int i = l; i > 0; --i)
			g << a[i];
		g.close ();
		return 0;
	}