Pagini recente » Cod sursa (job #1176936) | Cod sursa (job #2215935) | Cod sursa (job #2087531) | Cod sursa (job #2722087) | Cod sursa (job #1246328)
#include <stdio.h>
#define MAXK 78498
#define ALA_MARE 1000000
#define MOD 9973
char c[ALA_MARE+1];
int p[MAXK], k;
inline void ciur(){
int i, j;
for(i=2; i*i<=ALA_MARE; i++){
if(c[i]==0){
for(j=i*i; j<=ALA_MARE; j+=i){
c[j]=1;
}
}
}
k=0;
for(i=2; i<=ALA_MARE; i++){
if(c[i]==0){
p[k++]=i;
}
}
//printf("%d", k);
}
inline long long a_la_n(int a, int n){
int rez;
rez=1;
while(n!=0){
if((n&1)==1){
rez*=a;
rez%=MOD;
}
a*=a;
a%=MOD;
n>>=1;
}
return rez;
}
inline int invers(int a){
return a_la_n(a, MOD-2);
}
int main(){
int T, t, d, a, b, nd, sd, i;
long long n;
FILE *fin, *fout;
fin=fopen("ssnd.in", "r");
fout=fopen("ssnd.out", "w");
ciur();
fscanf(fin, "%d", &T);
for(t=0; t<T; t++){
fscanf(fin, "%lld", &n);
nd=1;
sd=1;
i=0;
while((i<k)&&(1LL*p[i]*p[i]<=n)){
if(n%p[i]==0){
d=1;
a=1;
while(n%p[i]==0){
n/=p[i];
d++;
a*=p[i];
a%=MOD;
}
nd*=d;
a=(a*p[i]-1+MOD)%MOD;
b=(p[i]-1+MOD)%MOD;
sd=(((a*sd)%MOD)*invers(b))%MOD;
}
i++;
}
if(n!=1){
nd*=2;
/*
a=(n*n-1+MOD)%MOD;
b=(n-1+MOD)%MOD;
sd=(((a*sd)%MOD)*invers(b))%MOD;
*/
sd=(sd*((n+1)%MOD))%MOD;
}
fprintf(fout, "%d %d\n", nd, sd);
}
fclose(fin);
fclose(fout);
return 0;
}