Pagini recente » Cod sursa (job #2235030) | Cod sursa (job #737265) | Cod sursa (job #2438643) | Cod sursa (job #3213728) | Cod sursa (job #3285049)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream fcin("ssnd.in");
ofstream fout("ssnd.out");
long long n, x, k, nr, ct;
long long P[1000005];
bitset <1000005>v;
int putere(int nr, int p)
{
int rez=1;
nr=nr%9973;
for(; p; p>>=1)
{
if (p & 1)
{
rez=rez*nr;
rez=rez%9973;
}
nr=nr*nr;
nr=nr%9973;
}
return rez;
}
int main()
{
v.set(0);
v.set(1);
for(int i=2; i<1000005; i++)
{
if (v.test(i)==0)
{
P[++k]=i;
for(int j=i+i; j<1000005; j+=i)
v.set(j);
}
}
fcin>>n;
for (int i=1; i<=n; i++)
{
fcin>>x;
nr=1;
ct=1;
for (int j=1; j<=k && 1LL*P[j]*P[j]<=x; ++j)
{
if (x%P[j]) continue;
int crt=0;
while (x%P[j]==0)
{
crt++;
x=x/P[j];
}
nr*=(crt+1);
int numr=(putere(P[j], crt+1)-1) % 9973;
int numi=putere(P[j]-1, 9971) % 9973;
ct=(((ct*numr)%9973)*numi)%9973;
}
if (x>1)
{
nr=nr*2;
ct=(1LL*ct*(x+1)%9973);
}
fout<<nr<<" "<<ct<<"\n";
}
}