Pagini recente » Cod sursa (job #2326327) | Cod sursa (job #3038728) | Cod sursa (job #253321) | Cod sursa (job #2624851) | Cod sursa (job #2230436)
#include <iostream>
#include <fstream>
#define MOD 9973
#define MAXN 1000001
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int nr_diviz,suma,v[MAXN],cnt;
void ciur(){
for(int i = 2; i < MAXN; i++)
v[i] = 1;
for(int i = 2; i < MAXN; i++){
if(v[i]){
v[cnt++] = i;
for(int j = i + i; j < MAXN; j+= i)
v[j] = 1;
}
}
}
int put(int a,int b){
int rez = 1;
while(b){
if(b % 2 == 0){
a = (a % MOD * a % MOD) % MOD;
b /= 2;
}else{
b--;
rez = (a % MOD * rez % MOD) % MOD;
}
}
return rez;
}
void rez(long long int n){
int i = 0,exp,d = v[i];
nr_diviz = 1,suma = 1;
while(d * d <= n){
exp = 0;
while(n % d == 0){
n /= d;
exp++;
}
if(exp > 0){
nr_diviz *= (exp + 1);
int aux = (put(d,exp + 1) - 1)/(d - 1);
suma = (suma % MOD * aux % MOD) % MOD;
}
d = v[i++];
}
if(n > 1){
nr_diviz *= 2;
int aux = (n*n - 1)/(n - 1);
suma = (suma % MOD * aux % MOD) % MOD;
}
}
int main()
{
int t;
in>>t;
ciur();
for(int i = 0; i < t; i++){
long long nr;
in>>nr;
rez(nr);
out<<nr_diviz<<" "<<suma<<"\n";
}
return 0;
}