Pagini recente » Cod sursa (job #558087) | Cod sursa (job #595386) | Cod sursa (job #578809) | Cod sursa (job #2902228) | Cod sursa (job #2172413)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#define pb push_back
#define ll unsigned long long
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const ll PLIM = 1e6+2;
const ll MOD = 9973;
ll t, n;
ll k;
bool b[PLIM];
vector <ll> prim;
ll db[100002];
int main()
{
for(ll i = 4; i < PLIM; i += 2)
{
b[i] = true;
}
prim.pb(2);
for(ll i = 3; i < PLIM; i += 2)
{
if(!b[i])
{
prim.pb(i);
for(ll j = i*2; j < PLIM; j += i)
{
b[j] = true;
}
}
}
/*
for(ll i = 0; i <= 10; ++i)
cout << prim[i] << " ";
cout << "\n";
*/
fin >> t;
for(ll i = 0; i < t; ++i)
{
fin >> n;
if(!b[n])
{
fout << 2 << " " << n+1 << "\n";
continue;
}
for(ll j = 0; prim[j] <= n/2; ++j)
{
db[j] = 1;
}
k = 0;
ll sum = 1;
ll nr = 1;
ll nn = n;
while(nn != 1)
{
if(nn % prim[k] == 0)
{
nn /= prim[k];
++db[k];
}
else
{
++k;
}
}
for(ll j = 0; prim[j] <= n/2; ++j)
{
nr *= db[j];
sum *= (pow(prim[j], db[j]) - 1) / (prim[j] - 1);
sum %= MOD;
}
fout << nr << " " << sum << "\n";
}
return 0;
}