Pagini recente » Cod sursa (job #396065) | Cod sursa (job #1859394) | Cod sursa (job #1072993) | Cod sursa (job #1417970) | Cod sursa (job #2788635)
#include <bits/stdc++.h>
#define mod 9973
#define ull unsigned long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
vector<int>prime;
bitset<1000005>viz;
void eratostene(int n)
{
viz[1] = 1;
prime.push_back(2);
for(int i = 3; i <= 1000005; i += 2)
{
if(viz[i] == 0)
{
prime.push_back(i);
for(int j = 2 * i; j <= 1000005; j += i)
viz[j] = 1;
}
}
}
ull putere(ull a, ull b)
{
ull p = 1;
while(b)
{
if(b % 2 == 1)
p = (p * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return p;
}
void nr_divizori(ull n)
{
ull nr = 1, suma = 1;
for(ull i = 0; i < prime.size() && 1LL * prime[i] * prime[i] <= n; i++)
{
if(n % prime[i])
continue;
ull k = 0;
while(n % prime[i] == 0)
{
k++;
n /= prime[i];
}
nr *= (k + 1);
ull p1 = (putere(prime[i], k + 1) - 1) % mod;
ull p2 = putere(prime[i] - 1, mod - 2) % mod;
suma = (((suma * p1) % mod) * p2) % mod;
}
if(n > 1)
{
nr <<= 1;
suma = (1LL * suma * (n + 1) % mod);
}
g << nr << " " << suma << '\n';
}
int main()
{
int n;
f >> n;
eratostene(n);
for(int i = 0; i < n; i++)
{
ull x;
f >> x;
nr_divizori(x);
}
}