Pagini recente » Istoria paginii runda/proba_de_pregatire_ioit/clasament | Cod sursa (job #381042) | Istoria paginii runda/2006-oji | Cod sursa (job #785517) | Cod sursa (job #2718201)
#include <bits/stdc++.h>
#define ll long long
#define mod 9973
#define NMAX 1000006
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool prim[NMAX + 5];
void Ciur()
{
prim[1] = 0;
for (ll i = 2; i <= NMAX; i++)
prim[i] = 1;
for (ll i = 2; i * i <= NMAX; i++)
if (prim[i])
{
for (ll j = i * i; j <= NMAX; j += i)
prim[j] = 0;
}
}
void Rezolva(ll n)
{
ll s = 1, nr = 1, d = 2;
while(n > 1)
{
ll p = 0, tmp = d;
if (prim[d])
{
while(n % d == 0)
{
++p;
n /= d;
tmp *= d;
}
if (p)
{
nr *= p + 1;
s *= (tmp - 1)/ (d - 1);
s %= mod;
}
}
++d;
if (n > 1 && d*d > n) d = n;
}
fout << nr << " " << s % mod << '\n';
}
int main()
{
ll t, n;
Ciur();
fin >> t;
for (ll i = 1; i <= t; i++)
{
fin >> n;
Rezolva(n);
}
fin.close();
fout.close();
return 0;
}