Pagini recente » Cod sursa (job #188060) | Cod sursa (job #3180791) | Cod sursa (job #2019830) | Cod sursa (job #2376869) | Cod sursa (job #1472802)
#include <fstream>
#define ll long long
#define N 1000000
#define MAX 80000
#define R 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int n, i, j, nprim[MAX], div, d;
bool prim[N];
ll x, aux, nr, sum;
void ciur(){
for(i = 2; i < N; i++)
if(!prim[i]){
nprim[++nprim[0]] = i;
for(j = 2 * i; j < N; j += i)
prim[j] = 1;
}
}
int putlog(int x, int n){
int rez = 1;
x %= R;
while(n > 0){
if(n & 1)
rez = rez * x % R;
n >>= 1;
x = x * x % R;
}
return rez;
}
void ssnd(ll x);
int main(){
ciur();
f >> n;
for(i = 0; i < n; i++){
f >> x;
ssnd(x);
}
return 0;
}
void ssnd(ll x){
int i = 1;
nr = 1;
sum = 1;
aux = x;
while((ll)nprim[i] * nprim[i] <= aux && i <= nprim[0]){
if(x % nprim[i] == 0){
div = nprim[i];
d = 1;
while(aux % div == 0){
aux /= div;
d++;
}
nr *= d;
sum = (sum * (putlog(div, d) - 1) % R) * putlog(div - 1, R - 2) % R;
}
i++;
}
if(aux != 1){
nr *= 2;
sum = sum * ((aux * aux - 1) / (aux - 1)) % R;
}
g << nr << " " << sum << "\n";
}