Pagini recente » Cod sursa (job #245773) | Cod sursa (job #313221) | Cod sursa (job #666018) | Cod sursa (job #2905411) | Cod sursa (job #2194409)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
#define pb push_back
#define ullong unsigned long long
vector<bool> b;
vector<ullong> p;
vector<ullong> v;
ullong pwr(ullong n, ullong p)
{
ullong x=1;
for(ullong i=0;(1<<i)<=p;i++)
{
if(p&(1<<i))
x=(x*n)%9973;
n=(n*n)%9973;
}
return x;
}
void ciur(ullong n)
{
ullong x=2, i;
b.resize(n, 0);
while(x<=n)
{
p.pb(x);
for(i=x;i<=n;i+=x)b[i]=1;
while(b[++x]&&x<=n);
}
}
void fact_prim(int n)
{
int i=0;
while(n!=1)
{
v.pb(0);
while(!(n%p[i]))
{
v.back()++;
n/=p[i];
}
i++;
}
}
int main()
{
ciur(1e+6);
ullong n, i;
f>>n;
while(f>>n)
{
fact_prim(n);
n=1;
for(i=0;i<v.size();i++)if(v[i])
{
n*=(v[i]+1);
n%=9973;
}
g<<n<<' ';
n=1;
for(i=0;i<v.size();i++)if(v[i])
{
n*=(pwr(p[i], v[i]+1)-1)/(p[i]-1);
n%=9973;
}
g<<n<<'\n';
v.clear();
}
f.close();
g.close();
return 0;
}