Cod sursa(job #603494)

Utilizator titusuTitus C titusu Data 16 iulie 2011 19:15:26
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <iostream>
//#define DEBUG
#define MOD 9973
using namespace std;

ifstream fin ("ssnd.in" );
ofstream fout("ssnd.out");

int main(){
	long long int n, x, s, nr;
	fin >> n ;
	for( ; n ; --n ){
		fin >> x;
		#ifdef DEBUG
			cout<<"x = " << x << endl;
		#endif
		s = nr = 1;
		long long int p , d = 2, termen ;
		while ( x > 1 ){
			p = 1; termen = 1;
			long long int stermen = 1;
			while ( x % d ==0 ){
				p ++, stermen = (stermen + ( termen = (termen * d ) % MOD ) ) % MOD, x /= d;
			}
			nr = p * nr % MOD;
			s = (s * stermen) % MOD;
			#ifdef DEBUG
				cout << nr << " " << s << endl;
			#endif
			d ++;
			if( x > 1 && d*d > x){
				nr  = (nr * 2) % MOD;
				s = s * (1+x) % MOD;
				#ifdef DEBUG
					cout << x<< " " << nr << " " << s << endl;
				#endif
				x = 1;
			}
		}
		fout << nr << " " << s<< "\n";
	}
}