Pagini recente » Cod sursa (job #1738358) | Cod sursa (job #203704) | Cod sursa (job #2462414) | Cod sursa (job #650868) | Cod sursa (job #2302289)
#include<fstream>
#include<bitset>
using namespace std;
const int N=1000001,M=9973;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n;
int t,k,p[N],i,j,w,z,r,x,y;
bitset<N> v;
int P(int x,int p)
{
int r=1;
for(x%=M;p;p>>=1,x*=x,x%=M)
if(p&1)
r*=x,r%=M;
return r;
}
int main()
{
for(i=2;i<N;i++)
if(!v[i])
for(j=2*i;j<N;j+=i)
v[j]=1;
for(i=2;i<N;i++)
if(!v[i])
p[++k]=i;
for(f>>t;t;t--)
{
for(f>>n,w=z=i=1;i<=k&&1LL*p[i]*p[i]<=n;i++)
{
if(n%p[i])
continue;
for(r=0;n%p[i]==0;n/=p[i],r++);
w*=(r+1),x=(P(p[i],r+1)-1)%M,y=P(p[i]-1,M-2)%M,z=(((z*x)%M)*y)%M;
}
if(n>1)
w*=2,z=(1LL*z*(n+1)%M);
g<<w<<" "<<z<<"\n";
}
}