Pagini recente » Cod sursa (job #776527) | Cod sursa (job #344329) | Cod sursa (job #260456) | Cod sursa (job #2312632) | Cod sursa (job #2791219)
#include <bits/stdc++.h>
#define nmax 1000005
#define MOD 9973
using namespace std;
string prob="ssnd";
ifstream in(prob+".in");
ofstream out(prob+".out");
int prime[nmax];
int s=0;
bool ciur[nmax];
int64_t powow(int64_t n,int64_t p){
if(p==0)return 1;
if(p==1)return n;
int64_t pp=powow(n,p>>1);
return pp*pp*powow(n,p&1);
}
void doCiur(){
prime[s++]=2;
for(int i=3;i<=nmax;i+=2){
if(!ciur[i]){
prime[s++]=i;
for(int64_t j=i;j*i<=nmax;j+=2){
ciur[i*j]=1;
}
}
}
}
void solve(){
int64_t n;
in>>n;
int nr,sum;
nr=sum=1;
for(int i=0;i<s;i++){
if(prime[i]*prime[i]>n)break;
if(n%prime[i])continue;
int ind=0;
while(n%prime[i]==0){
n/=prime[i];
ind++;
}
if(ind){
nr=(nr*(ind+1))%MOD;
sum=(sum*(powow(prime[i],ind+1)-1)/(prime[i]-1))%MOD;
}
}
if(n!=1){
nr=(nr*2)%MOD;
sum=(sum*((powow(n,2)-1)/(n-1)))%MOD;
}
out<<nr<<' '<<sum<<'\n';
}
int32_t main(){
doCiur();
int t;
in>>t;
while(t--)solve();
}