Pagini recente » Cod sursa (job #1287545) | Cod sursa (job #2356980) | Cod sursa (job #681948) | Cod sursa (job #1650455) | Cod sursa (job #822495)
Cod sursa(job #822495)
#include<cstdio>
#include<bitset>
#include<vector>
#include<utility>
#define M 9973
using namespace std;
vector<int> prime;
bitset<1000005> P;
long long n,q;
int i,j,t,k,p,sdiv,nrdiv;
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<=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<int>::iterator it=prime.begin();it!=prime.end()&&n!=1;it++)
{
k=(*it);
p=0;
while(n%k==0)
{
p++;
n=n/k;
}
if(p)
{
nrdiv*=p+1;
nrdiv%=M;
q=1;
for(i=1;i<=p+1;i++) q*=k;
q=q%M;
sdiv*=(q-1)/(k-1);
sdiv%=M;
}
}
if(n>1)
{
p=1;
k=n;
nrdiv*=p+1;
nrdiv%=M;
q=1;
for(i=1;i<=p+1;i++) q*=k;
sdiv*=(q-1)/(p-1);
sdiv%=M;
}
printf("%d %d\n",nrdiv,sdiv);
}
return 0;
}