Pagini recente » Cod sursa (job #264945) | Cod sursa (job #153751) | Cod sursa (job #163053) | Cod sursa (job #670514) | Cod sursa (job #672445)
Cod sursa(job #672445)
#include <fstream>
#include <bitset>
#define DN 1000005
#define MOD 9973
using namespace std;
long long N;
int T, K, P[DN];
bitset<DN>viz;
void ciur()
{
for(int i=2; i <DN; ++i)
{
if(viz[i]==0)
{
P[++K]=i;
for(int j=i+i; j<DN; j+=i)
viz[j] = 1;
}
}
}
int pow(int x, int p)
{
int rez=1;
x%=MOD;
for(; p; p >>= 1)
{
if(p & 1)
{
rez*=x;
rez%=MOD;
}
x*=x;
x%=MOD;
}
return rez;
}
int main()
{
freopen ("ssnd.in", "r", stdin);
freopen ("ssnd.out", "w", stdout);
ciur();
for(scanf("%d", &T); T; --T)
{
scanf("%d", &N);
int nd = 1, sd = 1;
for(int i=1; i<=K&&1LL*P[i]*P[i]<=N; ++i)
{
if(N % P[i]) continue;
int p = 0;
while(N % P[i] == 0)
{
N /= P[i];
++p;
}
nd *= (p+1);
int p1=(pow(P[i], p+1) - 1)%MOD;
int p2=pow(P[i]-1, MOD-2)%MOD;
sd=(((sd * p1) % MOD) * p2)%MOD;
}
if(N>1)
{
nd*=2;
sd=(1LL*sd*(N+1)%MOD);
}
printf("%d %d\n", nd, sd);
}
}