Pagini recente » Cod sursa (job #3150629) | Monitorul de evaluare | Cod sursa (job #3158737) | Cod sursa (job #1537619) | Cod sursa (job #1566163)
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int SZ = 1000001;
const int MOD = 9973;
int pw(int b,int e){
int p=1;
for(int k=0;(1<<k)<=e;k++){
if((1<<k)&e) p=(1LL*p*b)%MOD;
b=(1LL*b*b)%MOD;
}
return p;
}
int Pr[80000],d[SZ];
int main(){
for(int i=2;i<SZ;i++) if(!d[i]){
Pr[++Pr[0]]=i;
for(int j=i;j<SZ;j+=i) d[j]=1;
}
int t,x,num,sum;
in>>t;
while(t--){
in>>x;
num=1,sum=1;
for(int j=1;Pr[j]*Pr[j]<=x;j++){
int i=Pr[j];
if(x%i==0){
int e=0;
while(x%i==0) e++,x/=i;
num*=(e+1);
sum=(1LL*((1LL*sum*(pw(i,e+1)-1))%MOD)*pw(i-1,MOD-2))%MOD;
}
}
if(x>1) num*=2,sum=(1LL*((1LL*sum*(pw(x,2)-1))%MOD)*pw(x-1,MOD-2))%MOD;
out<<num<<' '<<sum<<'\n';
}
return 0;
}