Pagini recente » Cod sursa (job #1511041) | Cod sursa (job #2008910) | Cod sursa (job #1059870) | Cod sursa (job #1869302) | Cod sursa (job #767397)
Cod sursa(job #767397)
#include <cstdio>
#include<bitset>
#define mod 9973
using namespace std;
bitset<1000010> P;
void read(),solve();
int i,j,k,m,prim[100000],t,Nr,f,sum,nr,pow(int,int);
long long v;
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
}
void solve()
{
k=1;
prim[1]=2;
for(i=3;i<1000;i+=2)
if(!P[i])
{
prim[++k]=i;m=2*i;
for(j=i*i;j<=1000000;j+=m)P[j]=1;
}
for(i=1001;i<=1000000;i+=2)
if(!P[i])
prim[++k]=i;
for(;t;--t)
{
scanf("%lld",&v);
sum=1;
Nr=1;
for(i=1;prim[i]*prim[i]<=v&&i<=k;i++)
if(v%prim[i]==0)
{
nr=1;
for(;!(v%prim[i]);v/=prim[i])nr++;
Nr*=nr;
f=((pow(prim[i],nr)+9972)*pow(prim[i]-1,9971))%mod;
sum=(sum*f)%mod;
}
if(v-1)
{
Nr=2*Nr;
v=(v+1)%mod;
sum=(sum*(int)v)%mod;
}
printf("%d %lld\n",Nr,sum);
}
}
int pow(int B,int E)
{
int ret=1;
for(;E;E>>=1)
{
if(E&1)ret=(ret*B)%mod;
B=(B*B)%mod;
}
return ret;
}