Pagini recente » Cod sursa (job #2511923) | Cod sursa (job #763378) | Cod sursa (job #1171077) | Cod sursa (job #2799423) | Cod sursa (job #616017)
Cod sursa(job #616017)
#include <fstream>
#include <bitset>
using namespace std;
long long n;
int t,cnt,v[100005];
bitset <1000005> u;
int pow(int x,int p)
{
int sol=1;
x%=9973;
for(;p;p>>=1)
{
if(p&1)
{
sol*=x;
sol%=9973;
}
x*=x;
x%=9973;
}
return sol;
}
int main()
{
int i,nd,sd,p,p1,p2;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
for(i=2;i<1005;++i)
if(!u[i])
{
v[++cnt]=i;
for(int j=i<<1;j<1000005;j+=i)
u[j]=1;
}
for (;i<1000005;++i)
if (!u[i])
v[++cnt]=i;
fin>>t;
for(;t;--t)
{
fin>>n;
nd=1;
sd=1;
for(i=1;i<=cnt&&1LL*v[i]*v[i]<=n;++i)
if (n%v[i]==0)
{
p=0;
while(n%v[i]==0)
{
n/=v[i];
++p;
}
nd*=(p+1);
p1=(pow(v[i],p+1)-1)%9973;
p2=pow(v[i]-1,9973-2)%9973;
sd=(((sd*p1)%9973)*p2)%9973;
}
if(n>1)
{
nd*=2;
sd=(1LL*sd*(n+1)%9973);
}
fout<<nd<<" "<<sd<<"\n";
}
}