Pagini recente » Cod sursa (job #987595) | Cod sursa (job #1388981) | Cod sursa (job #2005394) | Cod sursa (job #143871) | Cod sursa (job #1386772)
#include <fstream>
#include <bitset>
#define MOD 9973
#define DIM 1000005
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int T, numberDiv, sumDiv, k;
bitset<DIM>A;
int P[DIM], powerPrime;
long long number;
void ciur(){
for(int i = 2;i <= DIM;i ++)
if(A[i] == 0){
P[++k] = i;
for(int j = 2 * i;j <= DIM; j += i)
A[j]=1;
}
}
inline int pow(int a, int b){
int r = 1;
a %= MOD;
while(b)
{
if(b % 2 == 0)
{
a = (a * a) % MOD;
b /= 2;
}
else
{
r = (r * a) % MOD;
b --;
}
}
return r;
}
int main()
{
ciur();
fin >> T;
while(T)
{
fin >> number;
sumDiv = 1;
numberDiv = 1;
for(int i = 1; i <= k && 1LL * P[i] * P[i] <= number; i ++)
{
if(number % P[i])
{
continue;
}
powerPrime = 0;
while(number % P[i] == 0)
{
number /= P[i];
powerPrime ++;
}
numberDiv *= (powerPrime + 1);
int power1 = (pow(P[i], powerPrime + 1) - 1) % MOD;
int power2 = pow(P[i] - 1, MOD - 2) % MOD;
sumDiv = (((sumDiv * power1) % MOD) * power2) % MOD;
}
if(number > 1){
numberDiv *= (1 + 1);
sumDiv = 1LL * sumDiv * (number + 1) % MOD;
}
fout << numberDiv << " " << sumDiv << '\n';
T--;
}
return 0;
}