Pagini recente » Cod sursa (job #893532) | Cod sursa (job #1683835) | Cod sursa (job #2174644) | Cod sursa (job #694039) | Cod sursa (job #1745112)
#include<fstream>
#include<math.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t,i,v[1000005],prime[1000005],nrp,sum,modulo=9973,m,k,d,v1,v2;
long long nrd,n;
void erat(){
int i,k,j;
for (i=4;i<=1000000;i+=2)
v[i]=1;
nrp++;
prime[nrp]=2;
for (i=3;i<=1000000;i+=2)
if (v[i]==0){
nrp++;
prime[nrp]=i;
k=i*2;
for (j=k;j<=1000000;j+=i)
v[j]=1;
}
}
int exp(int a,int b){
int val;
if (b==0) return 1;
if (b%2==0){
val=exp(a,b/2)%modulo;
return ((val%modulo)*(val%modulo))%modulo;
}
val=exp(a,b-1)%modulo;
return ((a%modulo)*(val%modulo))%modulo;
}
int main(){
erat();
fin>>t;
for (i=1;i<=t;i++){
fin>>n;
k=1;nrd=1;sum=1;
while(k<=nrp && 1LL*prime[k]*prime[k]<=n){
if (n%prime[k]==0){
d=0;
while(n%prime[k]==0){
n=n/prime[k];
d++;
}
nrd=nrd*(d+1);
v1=(exp(prime[k],d+1)%modulo-1)%modulo;
v2=(exp(prime[k]-1,modulo-2)%modulo);
sum=(((sum*v1)%modulo)*v2)%modulo;
}
k++;
}
if (n>1){
nrd=nrd*2;
sum=(sum*((n+1)%modulo))%modulo;
}
fout<<nrd<<" "<<sum<<'\n';
}
fin.close();
fin.close();
return 0;
}