Pagini recente » Cod sursa (job #1124559) | Cod sursa (job #3265898) | Cod sursa (job #3219025) | Cod sursa (job #2264891) | Cod sursa (job #822528)
Cod sursa(job #822528)
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#define M 9973
using namespace std;
vector<long long> prime;
bitset<1000005> P;
long long n,q,f;
long long i,j,t,k,p,sdiv,nrdiv,pp;
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&t);
prime.push_back(2);
for(i=3;i<=1000;i+=2)
{
if(!P[i])
{
prime.push_back(i);
for(j=i*i;j<=500000;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<long long>::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;
nrdiv%=M;
f=k%M; q=0; pp=1;
for(i=1;i<=p+1;i++) {q+=pp; pp*=f;}
sdiv*=q;
sdiv%=M;
}
}
if(n>1)
{
p=1; k=n;
nrdiv*=p+1;
nrdiv%=M;
f=k%M; q=0; pp=1;
for(i=1;i<=p+1;i++) {q+=pp; pp*=f;}
sdiv*=q;
sdiv%=M;
}
printf("%lld %lld\n",nrdiv,sdiv);
}
return 0;
}