Pagini recente » Cod sursa (job #1888494) | Cod sursa (job #1462591) | Cod sursa (job #1501110) | Cod sursa (job #524643) | Cod sursa (job #1466618)
#include <fstream>
#include <bitset>
using namespace std;
ofstream fout("ssnd.out");
ifstream fin("ssnd.in");
const int NMAX = 1000005;
const int MOD = 9973;
long long t, n;
long long prime[NMAX], p[NMAX], d[NMAX];
bitset<NMAX> ciur;
void construieste_ciur()
{
ciur.set();
ciur[0] = ciur[1] = false;
for(int i=2; i<NMAX; i++) {
if(ciur[i]){
prime[++prime[0]] = i;
for(int j=i+i; j<NMAX; j+=i)
ciur[i] = false;
}
}
}
long long pow(long b, long e)
{
long long sol = 1;
while(e) {
if(e & 1) sol *= b;
b *= b;
e >>= 1;
}
return sol;
}
int main()
{
construieste_ciur();
fin >> t;
for(int i=1; i<=t; i++)
{
long long j = 1, nr = 1, suma = 1;
fin >> n;
while(n > 1) {
if(n % prime[j] == 0) {
p[++p[0]] = prime[j];
while(n % prime[j] == 0) {
d[p[0]]++;
n /= prime[j];
}
}
j++;
}
for(int i=1; i<=p[0]; i++)
nr *= (d[i] + 1);
for(int i=1; i<=p[0]; i++)
suma *= ((pow(p[i], d[i] + 1) - 1) / (p[i] - 1));
fout << nr << ' ' << suma % MOD << '\n';
for(int i=1; i<=p[0]; i++) d[i] = 0, p[i] = 0;
p[0] = 0;
d[0] = 0;
}
return 0;
}