Cod sursa(job #3159511)
| Utilizator | Data | 21 octombrie 2023 14:44:46 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.72 kb |
#include <iostream>
using namespace std;
void ssnd(long long n, int& nrd, long long &sum){
nrd = 1, sum = 1;
int d = 2;
while(d * d <= n){
if(n%d == 0){
long long exp = 1;
int p = 0;
while(n % d == 0){
p++;
exp *= d;
n /= d;
}
nrd *= (p+1);
sum *= (exp*d - 1)/(d-1);
}
d++;
}
if(n != 1){
nrd *= 2;
sum *= (n*n - 1)/(n-1);
}
}
int main()
{
int t;
cin>>t;
for ( ; t; t--){
long long n, sum;
int nrd;
cin>>n;
ssnd(n, nrd, sum);
cout<<nrd<<' '<<sum<<'\n';
}
}
