Pagini recente » Cod sursa (job #3181230) | Cod sursa (job #3204677) | Cod sursa (job #1650005) | Cod sursa (job #1252057) | Cod sursa (job #2037893)
#include <stdio.h>
#include <stdlib.h>
#define SqrtMax 100003
#define mod 9973
#define ll long long
ll t,nr;
ll p[SqrtMax],v[SqrtMax];
ll lgPow(ll x, ll p){
ll 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(ll i = 2; i <= SqrtMax - 2; ++i){
if(p[i] == 0){
v[++nr] = i;
for(ll j = i + i; j <= SqrtMax - 2; j += i){
p[j] = 1;
}
}
}
ll n;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
ll e = 0, sum = 0, retin = n,ans1 = 1, ans2 = 1;
for(ll i = 1; i <= nr && v[i] * v[i] <= retin && n != 1; ++i){
if(!(n % v[i])){
ll putere = 0;
while(!(n % v[i])){
n /= v[i];
putere++;
}
ans1 *= (putere + 1); ans1 %= mod;
ans2 *= (lgPow(v[i],putere + 1) - 1); ans2 %= mod;
ans2 *= (lgPow(v[i] - 1, mod - 2)); ans2 %= mod;
// printf("%lld %lld %lld %lld\n",v[i],putere,ans1,ans2);
}
}
if(ans1 == 1){
ans1 = 2;
ans2 = n + 1;
}
printf("%lld %lld\n",ans1,ans2);
}
return 0;
}