Pagini recente » Cod sursa (job #1033030) | Cod sursa (job #3124329) | Cod sursa (job #43056) | Cod sursa (job #2854222) | Cod sursa (job #3173312)
#include <stdio.h>
#include <bitset>
#define MOD 9973
#define NMAX 1000005
int t, p[NMAX], k;
long long n;
std::bitset<NMAX> ciur;
void func_ciur() {
for (int i = 2; i <= NMAX; ++i) {
if (!ciur[i]) {
p[k++] = i;
for (int j = i + i; j <= NMAX; j += i) {
ciur[j] = 1;
}
}
}
}
inline long pow(int x, int n) {
int ret = 1;
x %= MOD;
for(; n; n >>= 1) {
if(n & 1) {
ret *= x;
ret %= MOD;
}
x *= x;
x %= MOD;
}
return ret;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
func_ciur();
while (t--) {
scanf("%lld", &n);
int cnt = 1, sum = 1;
for (int i = 0; i < k && 1LL * p[i] * p[i] <= n; ++i) {
if (n % p[i]) continue;
int cnt_p = 0;
while (n % p[i] == 0) {
n /= p[i];
++cnt_p;
}
cnt *= (cnt_p + 1);
int sum_p = (pow(p[i], cnt_p + 1) - 1) % MOD;
int inv_sum_p = pow(p[i] - 1, MOD - 2) % MOD;
sum = (((sum * sum_p) % MOD) * inv_sum_p) % MOD;
}
if (n > 1) {
cnt *= 2;
sum = (1LL * sum * (n + 1)) % MOD;
}
printf("%d %d\n", cnt, sum);
}
fclose(stdin);
fclose(stdout);
return 0;
}