Pagini recente » Cod sursa (job #647080) | Clasament caracatita_paul | Cod sursa (job #2640127) | Cod sursa (job #2936672) | Cod sursa (job #650676)
Cod sursa(job #650676)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long n,i,j,y,prim[100004],v[1000004],w,k;
void determinare(long long y){
long long nr, s, t, i, ex;
nr=s=1;
for(i=1;prim[i]*prim[i]<=y;i++){
if(y%prim[i]==0){
ex=1;
t=prim[i];
while(y%prim[i]==0){
t=t*prim[i];
ex++;
y/=prim[i];
}
nr*=ex;
s*=(t-1)/(prim[i]-1)%9973;
}
}
if(y!=1){
s*=(y*y-1)/(y-1)%9973;
nr*=2;
}
fout<<nr<<" "<<s%9973<<"\n";
}
int main (){
fin>>n;
prim[1]=2;
k=1;
for(i=2;i<=1000000;i++)
if(!v[i]){
k++;
prim[k]=i;
for(j=2*i;j<=1000000;j+=i)
v[j]=i;
}
for(j=1;j<=n;j++){
fin>>w;
determinare(w);
}
return 0;
}