Pagini recente » Cod sursa (job #1339072) | Cod sursa (job #1730161) | Cod sursa (job #3218913) | Cod sursa (job #895355) | Cod sursa (job #2130443)
#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=2;i*i<=1000000;i++)
if(!ciur[i])
for(j=i*i;j<=1000000;j+=i)
ciur[j]=1;
k=0;
for(i=2;i<=1000000;i++)
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(long long a,long long 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;
sum=nrdiv=1;
for(i=1;nrp[i]<=n && i<=k;i++)
if(n%nrp[i]==0)
{
x=n;
d=0;
while(x%nrp[i]==0)
{
d++;
x/=nrp[i];
}
nrdiv=nrdiv*(d+1);
sum=(1LL*sum*(Lgput(nrp[i],(d+1))-1)*Lgput_MOD((nrp[i]-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;
}