Pagini recente » Cod sursa (job #860792) | Cod sursa (job #2942327) | Cod sursa (job #1086124) | Cod sursa (job #717128) | Cod sursa (job #616014)
Cod sursa(job #616014)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long n;
int t,K,P[100005];
bitset <1000005> viz;
int pow(int x,int p)
{
int rez=1;
x%=9973;
for(;p;p>>=1)
{
if(p&1)
{
rez*=x;
rez%=9973;
}
x*=x;
x%=9973;
}
return rez;
}
int main()
{
int i;
for(i=2;i<1000005;++i)
if(viz[i]==0)
{
P[++K]=i;
for(int j=i<<1;j<1000005;j+=i)
viz[j]=1;
}
fin>>t;
for(;t;--t)
{
fin>>n;
int nd=1,sd=1,i,p,p1,p2;
for(i=1;i<=K&&1LL*P[i]*P[i]<=n;++i)
{
if (n%P[i])
continue;
p=0;
while(n%P[i]==0)
{
n/=P[i];
++p;
}
nd*=(p+1);
p1=(pow(P[i],p+1)-1)%9973;
p2=pow(P[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";
}
}