Pagini recente » Cod sursa (job #2091750) | Cod sursa (job #2875176) | Cod sursa (job #3201469) | Cod sursa (job #1263896) | Cod sursa (job #2045397)
#include <iostream>
#include <fstream>
#include <bitset>
#include <time.h>
#include <iomanip>
#define MOD 9973
#define NM 1000005
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n;
bitset < NM > viz;
int d[80000], k, t;
void ciur()
{
for(int i = 2; i <= NM; ++i)
{
if(!viz[i])
{
d[++k] = i;
for(int j = i + i; j <= NM; j += i)
viz[j] = 1;
}
}
}
inline int pow(int n, int p)
{
int res = 1;
n = n % MOD;
while(p)
{
if(p & 1) res = (res * n) % MOD;
n = (n * n) % MOD;
p >>= 1;
}
return res;
}
int main()
{
clock_t start, finish;
start = clock();
ciur();
f >> t;
for(int i = 1; i <= t; ++i)
{
int sum = 1, nrd = 1;
f >> n;
for(int j = 1; j <= k && 1LL * d[j] * d[j] <= n; ++j)
{
if(n % d[j]) continue;
int p = 0;
while(n % d[j] == 0)
{
p++;
n /= d[j];
}
nrd *= (p + 1);
int p1 = ( pow(d[j], p + 1) - 1) % MOD;
int p2 = pow(d[j] - 1, MOD - 2) % MOD;
sum = (((sum * p1) % MOD) * p2) % MOD;
}
if(n != 1)
{
nrd *= 2;
sum = (1LL * sum * (n + 1)) % MOD;
}
g << nrd << ' ' << sum << '\n';
}
finish = clock();
}