Pagini recente » Cod sursa (job #2829084) | Cod sursa (job #2551885) | Cod sursa (job #3197853) | Cod sursa (job #2060847) | Cod sursa (job #1317090)
#include <cstdio>
using namespace std;
const int NMAX = 1000005;
const int MOD = 9973;
long long div[1000005],t,n,k;
bool ciur[NMAX];
void ciuruiala()
{
for(int i = 2; i < NMAX; ++i)
{
if(ciur[i] == 0)
{
div[++k] = i;
for(int j = i+i; j < NMAX; j += i)
{
ciur[j] = 1;
}
}
}
}
inline long long pow(long long b, long long p)
{
if(p==0) return 1;
else
{
int aux = pow (b,p/2);
if (p & 1)
return aux*aux%MOD*b%MOD;
else
return aux*aux%MOD;
}
}
int main()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
ciuruiala();
scanf("%lld",&t);
for(; t; --t)
{
scanf("%lld",&n);
long long nd = 1, sd = 1;
for(int i = 1; i <= k && 1LL * div[i] * div[i] <= n; ++i)
{
if(n % div[i]) continue;
int p = 0;
while(n % div[i] == 0)
{
n /= div[i];
++p;
}
nd *= (p+1);
int p1 = (pow(div[i], p+1) - 1) % MOD;
int p2 = pow(div[i]-1, MOD-2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if(n > 1)
{
nd *= 2;
sd = (1LL*sd*(n+1) % MOD);
}
printf("%lld %lld\n",nd,sd);
}
}