Pagini recente » Cod sursa (job #1780683) | Cod sursa (job #594829) | Cod sursa (job #2235083) | Cod sursa (job #2779738) | Cod sursa (job #879589)
Cod sursa(job #879589)
#include<fstream>
#include<math.h>
#include<string.h>
#define mod 9973
#define max_n 100010
#define max_s 80
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int T,nr,i,d,k,j,x,y,nr_d,s_d;
char V[max_n];
long long p1,p2;
int Prim[max_n],Nr_d[max_s],Div[max_s];
double rad;
long long power(int x , int y){
long long p=x,sol=1;
while(y){
if(y%2==1)
sol*=p;
p*=p;;
y>>=1;
}
return sol;
}
void ciur(){
Prim[++k]=2;
for(i=3 ; i<=max_n ; i+=2)
if(V[i]==0){
Prim[++k]=i;
for(j=2*i ; j<=max_n ; j+=i)
V[i]=1;
}
}
int main(){
f>>T;
ciur();
while(T--){
f>>nr;
rad=sqrt(nr);
memset(Nr_d,0,sizeof(Nr_d));d=0;nr_d=1;s_d=1;
for(i=1 ; i<=k && Prim[i]<=rad ; i++)
if(nr%Prim[i]==0){
Div[++d]=Prim[i];
while(nr%Prim[i]==0){
Nr_d[d]++;
nr/=Prim[i];
}
}
if(nr!=1)
Div[++d]=nr,Nr_d[d]++;
for(i=1 ; i<=d ; i++){
nr_d*=(Nr_d[i]+1);
p1=power(Div[i],Nr_d[i]+1)-1;
p2=Div[i]-1;
s_d*=(p1/p2)%mod;
s_d%=mod;
}
g<<nr_d<<" "<<s_d<<"\n";
}
return 0;
}