Pagini recente » Cod sursa (job #2291409) | Cod sursa (job #722294) | Cod sursa (job #1232183) | Cod sursa (job #2298078) | Cod sursa (job #1212861)
#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[100];
int E[100];
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/=2;
}
return r;
}
int main() {
for (i=2;i<=1000000;i++) {
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;
for (i=1;1LL*P[i]*P[i]<=m;i++) {
if (n%P[i] == 0) {
k++;
D[k] = P[i];
E[k] = 0;
while (n!=1 && n%P[i] == 0) {
E[k]++;
n/=P[i];
}
}
}
if (n!=1) {
D[++k] = n%MOD;
E[k] = 1;
}
nd = 1; pd = 1;
for (i=1;i<=k;i++) {
nd = nd * (1+E[i]);
x = putere(D[i], 1+E[i]);
x--;
if (x < 0)
x+=MOD;
y = putere((D[i]+MOD-1)%MOD, MOD-2);
x = x * y % MOD;
pd = pd * x % MOD;
}
fout<<nd<<" "<<pd<<"\n";
}
return 0;
}