Mai intai trebuie sa te autentifici.
Cod sursa(job #1919831)
Utilizator | Data | 9 martie 2017 21:12:57 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.08 kb |
#include <iostream>
#include <fstream>
using namespace std;
int c[10005];
int main()
{
ifstream f("ssnd.in"); ofstream g("ssnd.out");
int p[6000]; int e[6000]; int i,x,y,z,l,j,n,nr;
f>>n;
for(i=2;i<=10005;i++) c[i]=1;
for(i=2;i<10005;i++)
{
if (c[i]==1) {for(j=i+i;j<10005;j+=i);
{
c[j]=0;
}}
}
for(i=1;i<=n;i++)
{
f>>x;
y=x/2;
nr=0;
for(j=2;j<=y;j++)
{
if (x%j==0)
{
nr++;
p[nr]=j;
e[nr]=1;
x/=j;
while(x%j==0)
{
e[nr]++;
x/=j;
}
if (x==1) break;
}
}
x=1;
y=1;
for(j=1;j<=nr;j++)
{
x=x*(e[j]+1);
z=1;
for(l=1;l<=e[j]+1;l++) {z=z*p[j];}
z=z-1;
z=z/(p[j]-1);
y=y*z;
}
g<<x<<' '<<y<<'\n';
}
return 0;
}