Cod sursa(job #568488)

Utilizator andreea29Iorga Andreea andreea29 Data 31 martie 2011 12:07:46
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<math.h>
using namespace std;
int main()
{unsigned long long n[1000], j, s, c, p, nrd;
int t, i, OK, r;
ifstream f("ssnd.in");
ofstream h("ssnd.out");
f>>t;
for (i=1; i<=t; i++)
	f>>n[i];
for (i=1; i<=t; i++)
{r=n[i];
nrd=1;
s=1;
if (r%2==0)
{c=0;
	do
	{r=r/2;
	c=c+1;}
	while (r%2==0);
nrd=nrd*(c+1);
s=s*((double)pow((double)(2),(double)(c+1))-1)/(2-1);
}
j=3;
do
{
p=3;
OK=1;
while ((p<=j/2)&&(OK=1))
{if (j%p==0)
	OK=0;
else
	p=p+2;}
if (OK==1)
	if (n[i]%j==0)
	{c=0;
	do
	{r=r/j;
	c=c+1;}
	while (r%j==0);
	nrd=nrd*(c+1);
	s=s*((double)pow((double)(j),(double)(c+1))-1)/(j-1);}
j=j+2;
}
while (j<=n[i]/2);
if (nrd==1)
	{nrd=2;
s=n[i]+1;}
h<<nrd<<" "<<s<<endl;
}

	
	
	f.close();
	h.close();
	return 0;
}