Cod sursa(job #481608)

Utilizator Mishu91Andrei Misarca Mishu91 Data 31 august 2010 22:10:25
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>

using namespace std;

const int MOD = 9973;

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

long long N;
int T;

void solve() {
	fin >> N;

	int sum = 1, nrd = 1;

	for(int d = 2; N > 1; ++d) {
		if(1LL*d*d > N) break;
		if(N % d) continue;

		int nrc = 0;
		int act_prod = 1, act_sum = 1;

		while(N % d == 0) {
			act_prod *= d;
			act_prod %= MOD;

			act_sum += act_prod;
			if(act_sum > MOD)
				act_sum -= MOD;

			N /= d;
			++nrc;
		}

		sum *= act_sum;
		sum %= MOD;

		nrd *= (nrc+1);
	}

	if(N != 1) {
		nrd *= 2;
		sum = (1LL*sum*(N+1) % MOD);
	}       

	fout << nrd << " " << sum << "\n";
}

int main()
{
	for(fin >> T; T; --T)                      
		solve();
}