Pagini recente » Cod sursa (job #396758) | Cod sursa (job #344146) | Cod sursa (job #2250605) | Cod sursa (job #565676) | Cod sursa (job #2986686)
#include <fstream>
using namespace std;
const int MOD = 9973;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int powlg(int n, int p)
{
int val = 1;
while(p)
{
if(p & 1)
val = 1LL * val * n % MOD;
n = 1LL * n * n % MOD;
p >>= 1;
}
return val;
}
inline int inv_mod(int a) ///invers modular
{
return powlg(a, MOD - 2);
}
void sdiv(long long n, int &nr, int &sum)
{
int p = 1;
sum = nr = 1;
if(n % 2 == 0)
{
do
{
p++;
n /= 2;
}
while(n % 2 == 0);
nr = p;
sum = powlg(2, p) - 1;
}
//
for(int d = 3; 1LL * d * d <= n; d += 2)
{
if(n % d == 0)
{
p = 1;
do
{
p++;
n /= d;
}
while(n % d == 0);
nr = nr * p % MOD;
sum = 1LL * sum * (powlg(d, p) - 1) % MOD * inv_mod(d - 1) % MOD;
}
}
if(n > 1)
{
nr = nr * 2 % MOD;
sum = 1LL * sum * (n + 1) % MOD;
}
}
int main()
{
int t, nr, sum;
long long n;
fin >> t;
while(t--)
{
fin >> n;
sdiv(n, nr, sum);
fout << nr << ' ' << sum << '\n';
}
fin.close();
fout.close();
return 0;
}