Pagini recente » Cod sursa (job #11377) | Cod sursa (job #2077967) | Cod sursa (job #1796507) | Cod sursa (job #2714148) | Cod sursa (job #2086031)
#include <fstream>
#define N 1000000
#define MOD 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout("ssnd.out");
int prim[N+5];
bool a[N+5];
void ciur()
{
for(int i = 4; i <= N; i += 2) a[i] = 1;
for(int i = 3; i * i <= N; i += 2)
if(!a[i])
for(int j = i * i; j <= N; j += 2*i) a[j] = 1;
for(int i = 2; i <= N; ++i)
if(!a[i]) prim[++prim[0]] = i;
}
int pow(int n, int x)
{
int p = 1;
while(x)
{
if(x % 2 == 1)
{
p = (p * n) % MOD;
x--;
}
n = (n * n) % MOD;
x /= 2;
}
return p;
}
void solve(long long x)
{
int nr = 1, sum = 1;
for(int i = 1; i <= prim[0] && prim[i] * prim[i] <= x; ++i)
if(x % prim[i] == 0)
{
int d = 0;
while(x % prim[i] == 0)
{
x /= prim[i];
d++;
}
nr *= (d+1);
int sus = (pow(prim[i], d+1) - 1) % MOD;
int jos = pow(prim[i]-1, MOD-2);
sum = (((sum * sus) % MOD) * jos) % MOD;
}
if(x > 1)
{
nr *= 2;
sum = (sum * (x+1)) % MOD;
}
fout << nr << " " << sum << '\n';
}
int main()
{
ciur();
int t;
long long n;
fin >> t;
while(t--)
{
fin >> n;
solve(n);
}
fin.close(); fout.close();
return 0;
}