Pagini recente » Cod sursa (job #3244673) | Cod sursa (job #245930) | Cod sursa (job #3121185) | Cod sursa (job #1121160) | Cod sursa (job #681296)
Cod sursa(job #681296)
#include <cstdio>
#define file_in "ssnd.in"
#define file_out "ssnd.out"
#define ll long long
#define mod 9973
#define lim 1000100
int Q,d,e,nr;
long long N,nrd,sumd;
int viz[lim];
int P[lim];
int put(int A, int B){
if (B==0)
return 1;
if (B%2==0){
int X=put(A,B/2);
return ((X%mod)*(X%mod))%mod;
}
else{
int X=put(A,B/2);
return ((((X%mod)*(X%mod))%mod)*A%mod)%mod;
}
}
void ciur(){
int i,j;
for (i=2;i<=lim;++i)
if (!viz[i]){
P[++nr]=i;
for (j=i+i;j<=lim;j+=i)
viz[j]=1;
}
}
int main(){
int i;
ciur();
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &Q);
while(Q--){
scanf("%lld", &N);
nrd=sumd=1;
for (i=1;i<=nr && i<=1LL*P[i]*P[i]<=N;++i){
if (N%P[i])
continue;
e=0;
while(N%P[i]==0){
e++;
N/=P[i];
}
if (e>0){
nrd*=(e+1);
int p1=(put(P[i],e+1)-1)%mod;
int p2=put(P[i]-1,mod-2)%mod;
sumd=(((sumd*p1)%mod)*p2)%mod;
}
}
if (N!=1){
nrd*=2;
sumd=(1LL*sumd*(N+1))%mod;
}
printf("%lld %lld\n", nrd,sumd);
}
return 0;
}