Pagini recente » Cod sursa (job #300828) | Cod sursa (job #680632) | Cod sursa (job #686124) | Cod sursa (job #2593489) | Cod sursa (job #3301397)
#include <bits/stdc++.h>
using namespace std;
#define mod 9973
const int MAXN=1e6+5;
bitset<MAXN> ciur;
int primes[78499];
void getprimes(){
ciur[0]=ciur[1]=true;
for (int j=2*2;j<MAXN;j+=2){
ciur[j]=true;
}
for (int i=3;i*i<MAXN;i+=2){
if (ciur[i]==false){
for (int j=i*i;j<MAXN;j+=i*2){
ciur[j]=true;
}
}
}
int j=0;
for (int i=0;i<MAXN;i++){
if (ciur[i]==false){
primes[j++]=i;
}
}
}
int main()
{
getprimes();
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
int t;
cin>>t;
while (t--){
long long n;
cin>>n;
map<int, int> m;
int i=0;
while (1LL*primes[i]*primes[i]<=n){
while (n%primes[i]==0){
n/=primes[i];
m[primes[i]]++;
}
i++;
}
if (n!=1){
m[n]++;
}
int ans1=1,ans2=1;
for (auto [div, cnt] : m){
long long sum=0;
int p=1;
ans1=ans1*(cnt+1);
for (int i=0;i<=cnt;i++){
sum+=p;
p*=div;
}
sum%=mod;
ans2=1LL*ans2*sum%mod;
}
cout<<ans1<<' '<<ans2<<'\n';
}
return 0;
}