Pagini recente » Cod sursa (job #381744) | Cod sursa (job #2740006) | Cod sursa (job #1503595) | Cod sursa (job #2340353) | Cod sursa (job #1016607)
#include <fstream>
#include <bitset>
#define Nmax 1000000
#define X 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int T,P[Nmax];
bitset < Nmax > v;
void Ciur()
{
P[++P[0]]=2;
for(int i=3;i<=Nmax;i+=2)
if(!v[i])
{
P[++P[0]]=i;
if(1LL*i*i<=Nmax)
for(int j=i*i;j<=Nmax;j+=i)v[j]=1;
}
}
long long Putere(long long N,long long P)
{
long long m=1;
while (P!=1)
if(P % 2==0)
{
N=(N*N) % X;
P/=2;
}
else
{
m=(m*N) % X;
P--;
}
return (m*N)% X;
}
inline void Querry()
{
int N,D=1,S=1;
f>>N;
for(int i=1;i<=P[0] && N!=1;++i)
if(N % P[i]==0)
{
int k=0;
while(N % P[i]==0)N/=P[i],++k;
D*=(k+1);
S=(1LL*S*(X+Putere(P[i],k+1)-1)*Putere(P[i]-1,X-2))% X;
}
if(N>1)
{
int k=1;
D*=(k+1);
S=(1LL*S*(X+Putere(N,k+1)-1)*Putere(N-1,X-2))% X;
}
g<<D<<' '<<S<<'\n';
}
int main()
{
Ciur();
f>>T;
for(int i=1;i<=T;++i)Querry();
f.close();g.close();
return 0;
}