Pagini recente » Cod sursa (job #2295352) | Cod sursa (job #2329926) | Cod sursa (job #1859228) | Cod sursa (job #2050463) | Cod sursa (job #1212868)
#include <fstream>
#include <bitset>
#define DIM 1000010
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bitset<DIM> v;
int P[DIM];
int D;
int E;
long long n, m;
int t, i, j, pd, nd, x, y, p, k;
int putere(int a, int b) {
int r = 1;
while (b) {
if (b&1)
r = (r * a) % MOD;
a = a * a % MOD;
b>>=1;
}
return r;
}
int main() {
P[p=1] = 2;
for (i=3;i<=1000000;i+=2) {
if (v[i] == 0) {
P[++p] = i;
for (j=i+i;j<=1000000;j+=i)
v[j] = 1;
}
}
fin>>t;
for (;t--;) {
fin>>n;
k = 0;
long long m = n;
nd = 1; pd = 1;
for (i=1;1LL*P[i]*P[i]<=m;i++) {
if (n%P[i] == 0) {
k++;
D = P[i];
E = 0;
while (n!=1 && n%P[i] == 0) {
E++;
n/=P[i];
}
nd = nd * (1+E);
x = putere(D, 1+E);
x--;
if (x < 0)
x+=MOD;
y = putere((D+MOD-1)%MOD, MOD-2);
x = x * y % MOD;
pd = pd * x % MOD;
}
}
if (n!=1) {
D = n%MOD;
E = 1;
nd = nd * (1+E);
x = putere(D, 1+E);
x--;
if (x < 0)
x+=MOD;
y = putere((D+MOD-1)%MOD, MOD-2);
x = x * y % MOD;
pd = pd * x % MOD;
}
fout<<nd<<" "<<pd<<"\n";
}
return 0;
}