Pagini recente » Cod sursa (job #3000887) | Cod sursa (job #1715453) | Cod sursa (job #2179416) | Cod sursa (job #2254374) | Cod sursa (job #2498381)
#include<fstream>
#include<bitset>
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long i,nr,T,k,p,n,a,b,s,m;
long long prime[100000],divizori[50],puteri[50];
bitset <1001010> v;
int pow (long long a, long long b){
int sol=1;
a%=MOD;
while(b){
if(b&1)
sol=(sol*a) % MOD;
a=(a*a) % MOD;
b>>=1;
}
return sol;
}
int main(){
fin>>T;
prime[++p]=2;
for(int i=3;i<=1001000;i+=2){
if(v[i]==0)
prime[++p]=i;
for(long long j=i+i+i;j<=1001000;j+=(i<<1))
v[j]=1;
}
for(int t=1;t<=T;t++){
fin>>n; m=n;
int j=1;
k=0;
while(m!=1 && prime[j]*prime[j]<=m){
if(m%prime[j]==0){
divizori[++k]=prime[j];
while(m%prime[j]==0){
m/=prime[j];
puteri[k]++;
}
}
j++;
}
if(m!=1){
divizori[++k]=m;
puteri[k]++;
}
nr=1;
for(i=1;i<=k;i++)
nr = (nr*(puteri[i]+1))%MOD;
fout<<nr<<" ";
s=1;
for(i=1;i<=k;i++){
a=pow(divizori[i], puteri[i]+1);
a--;
if(a<0)
a+=MOD;
b=divizori[i]-1;
s*=(a * pow(b, MOD-2))%MOD;
s%=MOD;
}
fout<<s<<"\n";
for(i=1;i<=k;i++)
puteri[i]=0;
}
return 0;
}