Pagini recente » Istoria paginii runda/rar14/clasament | Istoria paginii runda/denisilie94 | Istoria paginii runda/simulare_oni_11-12./clasament | Istoria paginii runda/kidsim/clasament | Cod sursa (job #941745)
Cod sursa(job #941745)
#include <fstream>
#include <vector>
#include <bitset>
#include <cmath>
using namespace std;
int main()
{
const int mod = 9973;
bitset<1000000> isprime;
vector<int> prime;
vector<int>::iterator it;
for (int i = 3; i < 1000000; i += 2)
isprime[i] = false;
for (int i = 3; i < 1000; i += 2)
if (isprime[i])
for (int j = i*i; j < 1000000; j += 2*i)
isprime[j] = false;
prime.push_back(2);
for (int i = 3; i < 1000000; i += 2)
if (isprime[i])
prime.push_back(i);
prime.push_back(1000003);
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
fin >> t;
for (long long n; t > 0; --t) {
fin >> n;
int sqrtn = sqrt(n), cnt = 1, sum = 1;
for (it = prime.begin(); *it <= sqrtn; ++it) {
if (n % *it == 0) {
int icnt = 1, isum = 1, ipow = 1;
do {
n /= *it;
++icnt;
ipow = (ipow * *it)%mod;
isum += ipow;
} while (n % *it == 0);
sqrtn = sqrt(n);
cnt *= icnt;
sum = sum*(isum%mod)%mod;
}
}
if (n != 1) {
cnt *= 2;
sum = sum*(1+n%mod)%mod;
}
fout << cnt << ' ' << sum << '\n';
}
return 0;
}