Cod sursa(job #2354494)
| Utilizator | Data | 25 februarie 2019 12:42:23 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.78 kb |
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,i,j;
long long x,nr,s,divizor;
void nrdiv_sumadiv(long long x)
{
long long d;
nr=1;
s=1;
int k;
for (d=2;d*d<=x;d++)
{
k=0;
while (x%d==0)
{
x=x/d;
k++;
}
if (k)
{
nr=nr*(k+1);
divizor=1;
for (int i=1;i<=k+1;i++)
divizor=divizor*d;
s=s*((divizor-1)/(d-1));
}
}
if (x>1)
{
nr=nr*2;
s=s*((x*x-1)/(x-1));
}
}
int main()
{
f>>t;
for (i=1;i<=t;i++)
{
f>>x;
nrdiv_sumadiv(x);
g<<nr<<" "<<s<<"\n";
}
return 0;
}
