Pagini recente » Cod sursa (job #2337215) | Cod sursa (job #2205955) | Cod sursa (job #2679830) | Cod sursa (job #1511591) | Cod sursa (job #1566093)
#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll Mx = 1e6 + 7;
const int mod = 9973;
int t;
ll n;
bool prime[Mx];
vector< int > prm;
void primes()
{
memset(prime,1,sizeof(prime));
prime[1] = 0;
prm.push_back(2);
for (int i = 4;i < Mx;i += 2)
prime[i] = 0;
for (int i = 3;i < Mx;i += 2)
if (prime[i])
{
prm.push_back(i);
for (int j = 2 * i;j < Mx;j += i)
prime[j] = 0;
}
}
int power(int x,int y)
{
int ans = 1;
for (;y;y /= 2)
{
if (y % 2)
ans = (ans * x) % mod;
x = (x * x) % mod;
}
return ans;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&t);
primes();
int m = prm.size();
for (;t;t--)
{
scanf("%lld",&n);
int nr = 1;
ll sum = 1;
for (int i = 0;i < m && ll(prm[i] * prm[i]) <= n;i++)
{
int aux = prm[i],cnt = 0;
if (n % aux)
continue;
while (n % aux == 0)
cnt++,n /= aux;
nr = nr * (cnt + 1);
int x = (power(aux,cnt + 1) - 1) % mod,
y = (power(aux - 1,mod - 2)) % mod;
sum = (((1LL * sum * x) % mod) * y) % mod;
}
if (n > 1)
{
nr = nr * 2;
sum = (1LL * sum * (n + 1)) % mod;
}
printf("%d %d\n",nr,sum);
}
return 0;
}