Cod sursa(job #2914605)
Utilizator | Alexandru Ioan alexandru_ioan.06 | Data | 20 iulie 2022 14:38:27 |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 70 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.69 kb |
#include <fstream>
#define MOD 9973
using namespace std;
ifstream cin ("ssnd.in");
ofstream cout ("ssnd.out");
long long NrDiv(long long n)
{
long long d=2,p,r=1;
while(n>1)
{
p=0;
while(!(n%d))n/=d,p++;
r*=(p+1);
++d;
if(d*d>n) d=n;
}
return r;
}
long long SumDiv(long long n)
{
long long d=2,p,r=1;
while(n>1)
{
p=d;
while(!(n%d)) n/=d,p*=d;
r*=(p-1)/(d-1);
++d;
if(d*d>n) d=n;
}
return r;
}
int main()
{
int n;
long long x;
cin>>n;
while(n--){
cin>>x;
cout<<NrDiv(x)<<" "<<SumDiv(x)%MOD<<'\n';
}
}