Pagini recente » Cod sursa (job #542694) | Cod sursa (job #159353) | Cod sursa (job #1068192) | Cod sursa (job #388339) | Cod sursa (job #1995104)
#include<fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
unsigned long long pwr(unsigned long long a,unsigned long long n){
if(n==1)
return a;
else{
if(n%2==0)
return pwr(a,n/2)*pwr(a,n/2);
else
return a*pwr(a,n-1);
}
}
pair<int,int> divs(unsigned long long n){
unsigned long long d,nrdiv=1,sumdiv=1,cnt;
if(n%2==0){
cnt=0;
while(n%2==0){
++cnt;
n/=2;
}
nrdiv*=(cnt+1);
sumdiv*=(pwr(2,cnt+1)-1);
}
for(d=3;d*d<=n;d+=2)
if(n%d==0){
cnt=0;
while(n%d==0){
++cnt;
n/=2;
}
nrdiv*=(cnt+1);
sumdiv*=(pwr(d,cnt+1)-1)/(d-1);
}
if(n>1){
nrdiv*=2;
sumdiv*=(pwr(n,2))/(n-1);
}
pair<unsigned long long,unsigned long long>a=make_pair(nrdiv,sumdiv);
return a;
}
int main(){
int t;
fin>>t;
while(t--){
unsigned long long nr;
fin>>nr;
pair<unsigned long long,unsigned long long>a=divs(nr);
fout<<a.first<<' '<<a.second<<'\n';
}
}