Pagini recente » Cod sursa (job #3221697) | Cod sursa (job #2949404) | Cod sursa (job #2193482) | Cod sursa (job #2690228) | Cod sursa (job #822540)
Cod sursa(job #822540)
#include<cstdio>
#include<bitset>
#include<vector>
#define M 9973
using namespace std;
vector<int> prime;
bitset<1000005> P;
long long n;
int q,f,i,j,t,k,p,sdiv,nrdiv,pp;
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
prime.push_back(2);
for(i=3;i<=1000;i+=2)
{
if(!P[i])
{
prime.push_back(i);
for(j=i*i;j<=1000000;j+=2*i) P[j]=1;
}
}
for(i=1001;i<=1000000;i+=2)
{
if(!P[i]) prime.push_back(i);
}
for(;t;t--)
{
scanf("%lld",&n); nrdiv=1; sdiv=1;
for(vector<int>::iterator it=prime.begin();it!=prime.end()&&((*it)*(*it))<=n;it++)
{
k=(*it);
p=0;
while(n%k==0)
{
p++;
n=n/k;
}
if(p)
{
nrdiv*=p+1;
f=k%M; q=0; pp=1;
for(i=1;i<=p+1;i++) {q+=pp; pp*=f;}
//q%=M;
sdiv=(sdiv*q)%M;
}
}
if(n>1)
{
p=1; k=n;
nrdiv*=p+1;
f=k%M; q=0; pp=1;
for(i=1;i<=p+1;i++) {q+=pp; pp*=f;}
q%=M;
sdiv=(sdiv*q)%M;
}
printf("%d %d\n",nrdiv,sdiv);
}
return 0;
}