Cod sursa(job #464076)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 18 iunie 2010 17:09:53
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;
long long k,maxim;
bool fol[1000001];
void ciur()
{
	long long  i,j;
	for(i=1;i*i<=maxim;i++)fol[i]=1;
	for(i=2;i*i<=maxim;i++)
		if(fol[i])
		for(j=i+i;j*i<=maxim;j+=i) 
			fol[j]=0;
}
int main()
{
	ifstream f("ssnd.in");
	ofstream g("ssnd.out");
	long long n[11]={0},i=0,nr=0,l=0,p=0,nn=0,suma=0,put=0,j=0;
	f>>nn;
	for(i=1;i<=nn;i++)
	{
		f>>n[i];
		if(maxim<n[i]) maxim=n[i];
	}	
	ciur();
	for(l=1;l<=nn;l++)
	{
		nr=1;
		p=0;
		suma=1;
		for(i=2;i*i<=n[l];i++)
		{
			p=0;
			if(n[l]%i==0 && fol[i]==1)  
			{
				while(n[l]%i==0)
				{
					n[l]=n[l]/i;
					p++;
				}
				nr=nr*(p+1);
				put=1;
				for(j=1;j<=p+1;j++) put=put*i;  suma=suma*((put-1)/(i-1));
			}
		}
		g<<nr<<' '<<suma%9973<<'\n';
	}	
	f.close();
	g.close();
	return 0;
}