Pagini recente » Cod sursa (job #2490249) | Cod sursa (job #306207) | Cod sursa (job #1059672) | Cod sursa (job #2980570) | Cod sursa (job #2130469)
#include <bits/stdc++.h>
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int Q,nrp[100000],k;
bitset<1000005>ciur;
void Generare()
{
int i,j;
ciur[1]=1;
for(i=4;i<=1000000;i+=2)
ciur[i]=1;
for(i=3;i*i<=1000000;i+=2)
if(!ciur[i])
for(j=i*i;j<=1000000;j+=2*i)
ciur[j]=1;
k=1;
nrp[k]=2;
for(i=3;i<=1000000;i+=2)
if(!ciur[i])nrp[++k]=i;
}
int Lgput_MOD(int a,int n)
{
int p=1;
while(n)
{
if(n%2)p=1LL*p*a%MOD;
n/=2;
a=1LL*a*a%MOD;
}
return p;
}
long long Lgput(int a,int n)
{
long long p=1;
while(n)
{
if(n%2)p=p*a;
n/=2;
a=a*a;
}
return p;
}
void Solutie(int n)
{
int i,d,nrdiv,sum,x,y;
sum=nrdiv=1;
i=1;
d=nrp[1];
while(n && d*d<=n && i<=k)
{
if(n%d==0)
{
x=0;
while(n%d==0)
{
x++;
n/=d;
}
nrdiv=nrdiv*(d+1);
y=Lgput(d,(x+1))-1;
if(y<0)y+=MOD;
sum=(1LL*sum*y%MOD*Lgput_MOD((d-1),MOD-2)%MOD)%MOD;
}
d=nrp[++i];
}
if(n>1)
{
nrdiv*=2;
y=Lgput(n,2)-1;
if(y<0)y+=MOD;
sum=(1LL*sum*y%MOD*Lgput_MOD((n-1),MOD-2)%MOD)%MOD;
}
fout<<nrdiv<<" "<<sum<<"\n";
}
int main()
{
Generare();
fin>>Q;
while(Q--)
{
int x;
fin>>x;
Solutie(x);
}
fin.close();
fout.close();
return 0;
}