Pagini recente » Cod sursa (job #576526) | Cod sursa (job #3237870) | Cod sursa (job #1646081) | Cod sursa (job #27904) | Cod sursa (job #1610597)
# include <fstream>
# define DIM 1000010
# define dim 78509
# define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int f[DIM],d[dim];
long long n,i,j,k,t,r,ok,nr,p,s,val1,val2,maxim,v[1001];
long long putere(long long a,long long b){
if(b==0)
return 1;
else{
long long x=putere(a,b/2);
if(b%2==0)
return (x*x)%MOD;
else
return (x*x*a)%MOD;
}
}
int main () {
fin>>t;
for(i=1;i<=t;i++){
fin>>v[i];
if(v[i]>maxim)
maxim=v[i];
}
for(i=2;i*i<=maxim+1;i++){
if(f[i]==0){
d[++k]=i;
for(j=2*i;j*j<=maxim+1;j+=i)
f[j]=1;
}
}
for(r=1;r<=t;r++){
n=v[r];
i=1;
s=1;
p=1;
while(n!=1&&i<=k&&d[i]*d[i]<=n){
nr=0;
while(n%d[i]==0){
nr++;
n/=d[i];
}
if(nr>1){
val1=putere(d[i],nr+1);
val2=putere(d[i]-1,MOD-2);
if(val1-1>-1){
s*=(val1-1)*val2;
s%=MOD;
}
else{
s*=(MOD-1)*val2;
s%=MOD;
}
}
else{
if(nr==1){
s*=(d[i]+1);
}
}
p*=(nr+1);
i++;
}
if(n!=1){
p*=2;
s*=(n+1);
s%=MOD;
}
fout<<p<<" "<<s<<"\n";
}
return 0;
}