Pagini recente » Cod sursa (job #1389530) | Cod sursa (job #883759) | Cod sursa (job #113524) | Cod sursa (job #888566) | Cod sursa (job #1317068)
#include <cstdio>
#define LL long long
#define MOD 9973
#define NMAX 1000005
using namespace std;
inline int lgput(int a,int b)
{
if(b==0) return 1;
else
{
int 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;
}
}
struct VAR
{
LL nrd,sd;
} ans;
int main()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
LL t;
ciuruiala();
scanf("%lld",&t);
for(; t; --t)
{
scanf("%lld",&n);
ans.nrd=1;
ans.sd=1;
for(LL i = 1; i <= k and div[i] * div[i] <= n; ++i)
{
if(n % div[i])
continue;
int exp = 0;
while(n % div[i] == 0)
{
n /= div[i];
++exp;
}
ans.nrd *= (exp+1);
LL p1 = (lgput(div[i], exp+1) - 1) % MOD;
LL p2 = lgput(div[i]-1, MOD-2) % MOD;
ans. sd = (((ans.sd * p1) % MOD) * p2) % MOD;
}
if(n > 1)
{
ans.nrd *= 2;
ans.sd = (ans.sd*(n+1) % MOD);
}
printf("%lld %lld\n",ans.nrd,ans.sd);
}
return 0;
}