Pagini recente » Cod sursa (job #726087) | Istoria paginii utilizator/matei.graura | Istoria paginii utilizator/unrated | Istoria paginii utilizator/mihaeladanila | Cod sursa (job #2389056)
#include <bits/stdc++.h>
#define ll long long
#define MOD 9973
#define NM 1000005
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int t;
bitset<NM> c;
vector<int> v;
ll putere(ll a, int b)///a^b
{
int p = 1;
while(b)
{
if(b%2 == 1)
p = (p*a)%MOD;
a = (a*a)%MOD;
b/=2;
}
return p;
}
void ciur()
{
c[0] = c[1] = 1;
for(int j=4; j<NM; j+=2)
c[j] = 1;
for(int i=3; i*i<NM; i+=2)
if(c[i] == 0)
for(int j=i*i; j<NM; j+=2*i)
c[j] = 1;
v.push_back(2);
for(int i=3; i<NM; i+=2)
if(!c[i])
v.push_back(i);
}
void solve(int x)
{
ll k = 0, nr_div = 1, suma = 1;
while(v[k]*v[k]<=x && k < v.size())
{
if(x%v[k] == 0)
{
int p = 0;
while(x%v[k] == 0)
{
p++;
x/=v[k];
}
nr_div*=(p+1);
suma = (suma* (putere(v[k], p+1)-1))%MOD;
suma = (suma* putere(v[k]-1, MOD-2))%MOD;
}
k++;
}
if(x > 1)
{
nr_div*=2;
suma = (suma* (putere(x, 2)-1))%MOD;
suma = (suma* putere(x-1, MOD-2))%MOD;
}
fout << nr_div << ' ' << suma << '\n';
}
int main()
{
fin >> t;
ciur();
while(t--)
{
int x;
fin >> x;
solve(x);
}
return 0;
}