Pagini recente » Cod sursa (job #1971377) | Cod sursa (job #2165887) | Cod sursa (job #1618991) | Cod sursa (job #1373570) | Cod sursa (job #1317077)
#include <fstream>
#define MOD 9973
#define NMAX 1000005
using namespace std;
ifstream cin ("ssnd.in");
ofstream cout ("ssnd.out");
inline long long lgput(long long a,long long b)
{
if(b==0) return 1;
else
{
long long c = lgput(a,b/2);
if(b&1)
return c*c%MOD*a%MOD;
else
return c*c%MOD;
}
}
bool ciur[NMAX];
int div[NMAX],k,n;
void ciuruiala ()
{
for(int i=2; i<NMAX; ++i)
if(ciur[i]==false)
{
div[++k] = i;
for(int j = i+i; j<NMAX; j+=i)
ciur[j]=true;
}
}
int main()
{
long long t,nd,sd;
ciuruiala();
cin>>t;
for(; t; --t)
{
cin>>n;
nd=1;
sd=1;
for(long long i = 1; i <= k and 1LL * div[i] * div[i] <= n; ++i)
{
if(n % div[i]) continue;
long long exp = 0;
while(n % div[i] == 0)
{
n /= div[i];
++exp;
}
nd *= (exp+1);
long long p1 = (lgput(div[i], exp+1) - 1) % MOD;
long long p2 = lgput(div[i]-1, MOD-2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if(n > 1)
{
nd *= 2;
sd = (1LL*sd*(n+1) % MOD);
}
cout<<nd*1LL<<" "<<sd*1LL<<"\n";
}
return 0;
}