Pagini recente » Cod sursa (job #2460507) | Cod sursa (job #1577088) | Cod sursa (job #3138095) | Cod sursa (job #1710655) | Cod sursa (job #1420661)
#include <fstream>
#include <algorithm>
#include <bitset>
#include <cmath>
#define NMAX 1000005
#define PMAX 500000
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t, P[PMAX], nr, lim;
long long prod, sum, X;
bitset < NMAX > v;
void ciur(int N) {
P[ ++P[0] ] = 2;
for (int i = 4; i <= N; i += 2) v[i] = 1;
for(int i = 3; i <= N; i +=2)
if(!v[i]){
P[ ++P[0] ] = i;
for(int j = 2*i; j <=N ; j +=i)
if(!v[j]) v[j] = 1;
}
}
long long lgput(long long N,long long K)
{
if(K == 0)return 1;
long long M = 1;
while(K!=1)
if(K % 2 == 0){
N = (N*N) % MOD;
K/=2;
} else {
M=(M*N) % MOD;
--K;
}
return (N*M) % MOD;
}
int main() {
f>>t;
ciur(NMAX-5);
for (int test=1; test <= t; ++test) {
f >> X;
prod = sum = 1;
for (int i = 1; i <= nr && P[i]*P[i] <= X && X>1; ++i)
if (X % P[i] == 0){
int d=0;
while (X % P[i] == 0) {
++d;
X/=P[i];
}
prod *= (d+1);
int x1=(lgput(P[i], d+1)-1) % MOD,
x2=lgput(P[i]-1, MOD-2);
sum=(sum*x1*x2) % MOD;
}
if (X>1) {
prod *=2;
sum=(sum * (X+1) ) % MOD;
}
g << prod << ' ' << sum << '\n';
}
return 0;
}