Pagini recente » Cod sursa (job #1342601) | Istoria paginii runda/123456789012/clasament | Cod sursa (job #614843) | Cod sursa (job #1775520) | Cod sursa (job #2456795)
#pragma GCC optimize("O3")
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#define MOD 9973
long long put(int b, int e)
{
int ret = 1;
b %= MOD;
while(e)
{
if(e & 1)
{
ret *= b;
ret %= MOD;
}
b *= b;
b %= MOD;
e >>= 1;
}
return ret;
}
int primes[78500], cntPrimes;
bool ciur[1000005];
int main()
{
int t;
in >> t;
primes[cntPrimes++] = 2;
for(int i = 4; i <= 1000000; i += 2)
ciur[i] = 1;
for(int i = 3; i <= 1000000; i += 2)
{
if(!ciur[i])
{
primes[cntPrimes++] = i;
if(1000000/i >= i)
{
for(int j = i * i; j <= 1000000; j += i)
ciur[j] = 1;
}
}
}
while(t--)
{
long long x;
int cnt = 1;
int sum = 1;
in >> x;
for(int i = 0; i < cntPrimes && 1LL * primes[i] * primes[i] <= x; i++)
{
int p = primes[i];
if(x % p == 0)
{
int e = 0;
while(x % p == 0)
{
x /= p;
e++;
}
cnt *= e+1;
sum = (sum * ((put(p, e+1) - 1) % MOD) * (put(p-1, MOD-2) % MOD)) % MOD;
}
}
if(x != 1)
{
cnt *= 2;
sum = (1LL * sum * (x*x - 1) / (x - 1)) % MOD;
}
out << cnt << ' ' << sum << '\n';
}
return 0;
}