Cod sursa(job #715920)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 17 martie 2012 22:35:48
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<math.h>
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<assert.h>
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();
return 0;
}