Pagini recente » Cod sursa (job #1598735) | Cod sursa (job #1265161) | Cod sursa (job #1574937) | Istoria paginii runda/10_oji1 | Cod sursa (job #2087207)
#include <iostream>
#include <fstream>
#define ll long long
#define crmx 1000000
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
ll n, i, j, t, np, dv[80000], NR, SUM, MARE, x, y, h;
bool b[1000010];
void invmod (ll a, ll b, ll &x, ll &y)
{
if (b == 0)
{ x = 1; y = 0; }
else
{
ll x0, y0;
invmod (b, a%b, x0, y0);
x = y0;
y = x0-(a/b)*y0;
}
}
int main () {
for (i = 2; i <= crmx; i++)
if (b[i] == 0)
{
np++; dv[np] = i;
for (j = 2; j*i <= crmx; j++)
b[i*j] = 1;
}
fin >> t;
while (t)
{
fin >> n;
NR = 1;
MARE = 1;
ll d = 1;
while (n != 1 && d <= np)
{
ll pt = 0;
while (n%dv[d] == 0)
{ pt++; n /= dv[d]; }
if (pt != 0)
{
SUM = 1;
NR *= pt+1;
NR %= mod;
for (i = 1; i <= pt+1; i++)
SUM = (SUM*dv[d])%mod;
SUM--;
invmod(dv[d]-1, mod, x, y);
if (x < 0) x += (-x/mod)*mod+mod;
SUM = (SUM*x)%mod;
MARE *= SUM;
}
d++;
}
fout << NR << " " << MARE << "\n";
t--;
}
}