Pagini recente » Cod sursa (job #2554867) | Cod sursa (job #1910881) | Cod sursa (job #586231) | Cod sursa (job #2695195) | Cod sursa (job #3151847)
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t, nDiv, sumDiv;
long long n;
const int MOD = 9973;
int powlg(int n, int p)
{
int val = 1, x = n % MOD;
while(p)
{
if(p & 1)
val = val * x % MOD;
x = x * x % MOD;
p >>= 1;
}
return val;
}
void sdiv()
{
sumDiv = 1;
nDiv = 1;
if(n % 2 == 0)
{
int p = 0;
while(n % 2 == 0)
{
p++;
n /= 2;
}
nDiv *= (p + 1);
sumDiv = powlg(2, p + 1) - 1;
}
for(int d = 3; 1LL * d * d <= n; d += 2)
{
if(n % d == 0)
{
int p = 0;
while(n % d == 0)
{
p++;
n /= d;
}
nDiv *= (p + 1) % MOD;
sumDiv *= 1LL * (powlg(d, p + 1) - 1) % MOD * powlg(d - 1, MOD - 2) % MOD;
}
}
if(n > 1)
{
nDiv = nDiv * 2 % MOD;
sumDiv = 1LL * sumDiv * (n + 1) % MOD;
}
}
int main()
{
f >> t;
for(int i = 1; i <= t; i++)
{
f >> n;
sdiv();
g << nDiv << ' ' << sumDiv << '\n';
}
f.close();
g.close();
return 0;
}