Pagini recente » Cod sursa (job #1527629) | Cod sursa (job #3203516) | Cod sursa (job #2631545) | Cod sursa (job #2634049) | Cod sursa (job #2738350)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <bitset>
#define MOD 9973
#define DIM 1000000
#define ll long long
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
bitset <DIM+10> ciur;
vector <ll> prime;
void sieve()
{ ciur[0] = ciur[1] = 1;
for(int i=2; i<=DIM; i++)
if(!ciur[i])
{ prime.push_back(i);
for(int j=2*i; j<=DIM; j+=i)
ciur[j] = 1;
}
}
ll lgput(ll a, ll n)
{ if(!n)
return 1;
if(n % 2 == 0)
return lgput(a*a % MOD, n/2);
return a * lgput(a*a % MOD, n/2) % MOD;
}
int main()
{
sieve();
fin >> t;
while(t--)
{ ll n;
fin >> n;
ll n1 = n, sq = sqrt(n), sum = 1, nr = 1;
for(ll i=0; prime[i]<=sq && n1 > 1; i++)
if(n1 % prime[i] == 0)
{ ll cnt = 0;
while(n1 % prime[i] == 0)
n1 /= prime[i], cnt++;
nr = nr * (cnt + 1) % MOD;
sum = sum * (lgput(prime[i], cnt + 1) - 1 + MOD) * lgput(prime[i] - 1, MOD - 2) % MOD;
}
if(n1 > 1)
{ nr = nr * 2 % MOD;
sum = sum * (lgput(n1, 2) - 1 + MOD) * lgput(n1 - 1, MOD - 2) % MOD;
}
fout << nr << ' ' << sum << '\n';
}
return 0;
}