Pagini recente » Cod sursa (job #366298) | Cod sursa (job #100304) | Cod sursa (job #209104) | Cod sursa (job #237805) | Cod sursa (job #1000097)
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
int prim[100000];
void ciur(){
int i,j;
const int MAXL = 1000000;
char k[MAXL+2];
for(i=1;i<=MAXL;i++) k[i]=1;
for(i=2;i<=MAXL;i++){
if(k[i]==1){
prim[++prim[0]]=i;
for(j=i+i;j<=MAXL;j+=i) k[j]=0;
}
}
}
long long get(long long P,long long D){
long long p=1;
for(int i=1;i<=D+1;i++){
p*=P;
p%=MOD;
}
p-=1;
long long pp=1;
for(int i=1;i<=MOD-2;i++){
pp*=(P-1);
pp%=MOD;
}
return (p*pp)%MOD;
}
void proc(long long P[],long long D[],int L){
long long nr=1,sum=1;
for(int i=1;i<=L;i++){
nr*=(D[i]+1);
sum*=get(P[i],D[i]);
sum%=MOD;
}
out<<nr<<' '<<sum<<'\n';
}
int main(){
ciur();
int i,t;
long long n,p[20],d[20];
in>>t;
for(;t;--t){
in>>n;
int l=0;
for(i=1;prim[i]*prim[i]<=n;i++){
if(n%prim[i]==0){
l++;
p[l]=prim[i];
int e=0;
while(n%prim[i]==0){
e++;
n/=prim[i];
}
d[l]=e;
}
}
if(n>1){
l++;
p[l]=n;
d[l]=1;
}
proc(p,d,l);
}
return 0;
}