Pagini recente » Cod sursa (job #2099774) | Cod sursa (job #233030) | Cod sursa (job #2030906) | Cod sursa (job #1946636) | Cod sursa (job #2347069)
#include <bits/stdc++.h>
using namespace std;
#define MOD 9973
#define ll long long
int prime[100010],p[100010],d[100010],ciur[1000010];
ll sus, jos, dv;
ll inv(ll x, ll n){
if (n==0) return 1;
if (n==1) return x;
ll y=inv(x,n/2);
y=(y*y)%MOD;
if (n%2==1) y=(y*x)%MOD;
return y;
}
int main()
{
int i,n,k,nr=0,j;
ll x;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
for (i=2;i<=1000000;i++){
if (ciur[i]==0){
prime[++nr]=i;
for (j=2*i;j<=1000000;j+=i)
ciur[j]=1;
}
}
scanf("%d",&n);
while (n){
n--;
scanf("%lld",&x);
k=0;
for (i=1;i*i<=x&&x>1&&i<=nr;i++){
if (x%prime[i]==0){
p[++k]=prime[i];
d[k]=0;
while (x%prime[i]==0){
x/=prime[i];
d[k]++;
}
}
}
if (x>1){
p[++k]=x;
d[k]=1;
}
sus=1;
jos=1;
dv=1;
for (i=1;i<=k;i++){
dv=(dv*(d[i]+1))%MOD;
sus=(sus*((inv(p[i],d[i]+1)-1+MOD)%MOD))%MOD;
jos=(jos*((p[i]-1+MOD)%MOD))%MOD;
}
jos=inv(jos,MOD-2);
sus=(sus*jos)%MOD;
printf("%lld %lld\n",dv,sus);
}
return 0;
}