Pagini recente » Cod sursa (job #618434) | Cod sursa (job #3229601) | Cod sursa (job #2061935) | Cod sursa (job #2551177) | Cod sursa (job #2461355)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
const int MAX_N=1000005;
const int MOD=9973;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n;
int t,k,P[MAX_N],i,j;
bitset <MAX_N> viz;
void ciur()
{
for(i=2;i<=MAX_N;i++)
{
if(viz[i]==0)
{
P[++k]=1;
for(j=i+i;j<=MAX_N;j+=i)
{
viz[j]=1;
}
}
}
}
inline int pow(int x, int p)
{
int rez=1;
x%=MOD;
for(;p;p>>=1)
{
if(p&1)
{
rez*=x;
rez%=MOD;
}
x*=x;
x%=MOD;
}
return rez;
}
void solve()
{
int nd=1,sd=1,n,k;
for(int i=1;i<=k&&1LL*P[i]*P[i]<=n;++i)
{
if(n%P[i])
continue;
int p=0;
while(n%P[i]==0)
{
n/=P[i];
p++;
}
nd*=(p+1);
int p1=(pow(P[i],p+1)-1)%MOD;
int p2=pow(P[i]-1,MOD-2)%MOD;
sd =(((sd*p1)%MOD)*p2)%MOD;
}
if(n>1)
{
nd*=2;
sd=(1LL*sd*(n+1))%MOD;
}
g<<nd<<" "<<sd<<"\n";
}
int main()
{
int T;
ciur();
for(f>>T;T;T--)
solve();
return 0;
}