Pagini recente » Cod sursa (job #3137141) | Cod sursa (job #1708524) | Cod sursa (job #2839893) | Cod sursa (job #2634652) | Cod sursa (job #2037906)
#include <stdio.h>
#include <stdlib.h>
#define SqrtMax 100003
#define mod 9973
int t,nr;
int p[SqrtMax],v[SqrtMax];
int lgPow(int x, int p){
int r = 1;
while(p >= 1){
if(p % 2 == 1){
p--;
r *= x;
r %= mod;
}
x *= x;
x %= mod;
p /= 2;
}
// printf("%ld\n",r);
return r % mod;
}
int main()
{
for(int i = 2; i <= SqrtMax - 2; ++i){
if(p[i] == 0){
v[++nr] = i;
for(int j = i + i; j <= SqrtMax - 2; j += i){
p[j] = 1;
}
}
}
int n;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int e = 0, sum = 0, retin = n,ans1 = 1, ans2 = 1;
for(int i = 1; i <= nr && v[i] * v[i] <= n; ++i){
if(!(n % v[i])){
int putere = 0;
while(!(n % v[i])){
n /= v[i];
putere++;
}
ans1 *= (putere + 1); ans1 %= mod;
ans2 *= ((lgPow(v[i],putere + 1) - 1 + mod) % mod); ans2 %= mod;
ans2 *= (lgPow(v[i] - 1, mod - 2)); ans2 %= mod;
// printf("%intd %intd %intd %intd\n",v[i],putere,ans1,ans2);
}
}
if(ans1 == 1){
ans1 = 2;
ans2 = n + 1;
}
if(n > 1){
ans1 *= 2; ans1 %= mod;
ans2 *= (n + 1); ans2 %= mod;
}
printf("%d %d\n",ans1,ans2);
}
return 0;
}