Cod sursa(job #638821)

Utilizator hainagiudanielHainagiu Daniel hainagiudaniel Data 21 noiembrie 2011 17:52:31
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
using namespace std;
int main()
{
	int n,i,p=1,m=2,a=0,j;
	long long x,s=1,b=1;
	char prim[1000005]={0};
	ifstream f("ssnd.in");
	ofstream g("ssnd.out");
	f>>n;prim[2]=1;
	for (i = 3; i <=1000000; i+=2)
		prim[i]=1;
	for (i = 3; i <=1000000; i+=2)
		if(prim[i])
			for (j = i+i; j <= 100000; j += i) 
				prim[j] = 0;       
	for(i=1;i<=n;i++)
	{
		f>>x;
		while(x!=1&&m<=sqrt((float)x))
		{	
			if(prim[m])
			{
				while(x%m==0)
			{
				a++;
				x=x/m;
			}
			p=p*(a+1);
			for(j=0;j<=a;j++)
				b=b*m;
			s=s*(b-1)/(m-1);
			a=0;b=1;
			if(m==2)
				m++;
			else
			m+=2;
			}
			else
				if(m==2)
				m++;
				else
				m+=2;
		}
		if(x!=1)
		{	p=p*2;
			s=s+x;
		}
		m=2;
		g<<p<<" "<<s<<'\n';
		s=1;p=1;
	}
	return 0;
}