Pagini recente » Cod sursa (job #2773605) | Cod sursa (job #655365) | Cod sursa (job #1962622) | Cod sursa (job #586922) | Cod sursa (job #2194653)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <cmath>
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*=n;
n*=n;
}
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);
}
}
pair<ullong, ullong> fact_prim(ullong n)
{
ullong i=0, cn=n;
while(p[i]<=sqrt(cn))
{
v[i]=0;
while(!(n%p[i]))
{
v[i]++;
n/=p[i];
}
i++;
}
return make_pair(n, i);
}
int main()
{
ciur(1e+6);
ullong n, i, cn;
pair<ullong, ullong> pa;
f>>n;
v.resize(1000003);
while(f>>n)
{
pa=fact_prim(n);
cn=pa.first;
n=1;
for(i=0;i<=pa.second;i++)if(v[i])
{
n*=(v[i]+1);
n%=9973;
}
if(cn>1)
{
n*=2;
n%=9973;
}
g<<n<<' ';
n=1;
for(i=0;i<pa.second;i++)if(v[i])
{
n*=(pwr(p[i], v[i]+1)-1)/(p[i]-1);
n%=9973;
}
if(cn>1)
{
n*=(pwr(cn, 2)-1)/(cn-1);
n%=9973;
}
g<<n<<'\n';
///v.clear();
}
f.close();
g.close();
return 0;
}