Cod sursa(job #544524)

Utilizator Ast09Stoica Anca Ast09 Data 1 martie 2011 19:04:46
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream.h>
#include<math.h>
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long v[1000005],c[1000005],m,x,nr=1,sum=1;
int t,P;

void ciur()
{int y;
	for(int i=2;i<1000000;i++)
		if(c[i]==0)
		{y=2;
		while(y*i<1000000) c[y*i]=1,y++;
		}
	m=0;
	for(int i=2;i<1000000;i++)
		if(c[i]==0) v[++m]=i;
}		


void prelucreaza()
{
	sum=1,nr=1;
	for(int i=1;v[i]*v[i]<=x;i++)
		if(x%v[i]==0)
		{
			int p=0;
			while(x%v[i]==0)
			{
				x=x/v[i];
				p++;
			}
			nr=nr*(p+1);
			sum=sum*((pow(v[i],p+1)-1)/(v[i]-1));
		}
	if(x!=1)
	{
		nr=nr*2;
		sum=sum*((pow(x,2)-1)/(x-1));
		
	}
	sum=sum%P;
	g<<nr<<' '<<sum<<'\n';
}


int main()
{
	P=9973;
	f>>t;
	ciur();
	for(int i=1;i<=t;i++)
	{
		f>>x;
		prelucreaza();
	}	
	f.close();
	g.close();
	return 0;
}