Pagini recente » Cod sursa (job #731258) | Cod sursa (job #352433) | Cod sursa (job #2026944) | Cod sursa (job #1443247) | Cod sursa (job #1162272)
#include <stdio.h>
#define fr(i,a,b) for(i=a;i<b;++i)
#define N 1000010
#define M 9973
char p[N];
int P[N],PN;
int x,y,x1;
int gcd(int a,int b){
if(!b){x=1,y=0;return a;}
int d=gcd(b,a%b);
x1=x,x=y,y=x1-y*(a/b);
return d;
}
int modinv(int a,int b){
int d=gcd(a,b);
while(x<0)x+=b;
while(x>=b)x-=b;
return x;
}
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int i,j,m,t;
long long n;
fr(i,2,N) if(!p[i])for(j=i<<1;j<N;j+=i)p[j]=1;
fr(i,2,N)if(!p[i])P[PN++]=i;
int nr,sum;
scanf("%i",&t);
while(t--){
scanf("%lli",&n);
nr=sum=1,i=0,j=0;
while(n>1){
j=0;
m=P[i]%M;
while(!(n%P[i])){
m*=P[i]%M;
m%=M;
++j;
n/=P[i];
}
if(j) sum*=--m*modinv(P[i]-1,M);
sum%=M;
nr*=++j;
nr%=M;
++i;
}
while(nr<0)nr+=M;
while(nr>=M)nr-=M;
while(sum<0)sum+=M;
while(sum>=M)sum-=M;
printf("%i %i\n",nr,sum);
}
return 0;
}