Cod sursa(job #418651)

Utilizator otilia_sOtilia Stretcu otilia_s Data 16 martie 2010 10:51:55
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;
#define NMAX 1000002
#define MOD 9973
bool prim[NMAX];
int p[NMAX];

int main()
{
	int i,j, z6=1000000, np=0, t, pt,d; long long n, nd, sum,dp;
	for (i=2;i<=z6;++i)
	 if (!prim[i])
		 {
			p[++np]=i;
			for (j=i+i;j<=z6;j+=i)
			 prim[j]=true;	
		 }
	
	
	ifstream fin("ssnd.in"); ofstream fout("ssnd.out");
	fin>>t;
	for (i=1;i<=t;++i)
	{
		fin>>n;
		if (n<z6)
			if (!prim[n]) { fout<<"2 "<<n+1<<"\n"; continue;}
		nd=1; sum=1; 
		for (d=1;n>1;++d)
		{
			pt=0; dp=p[d];
			while (n%p[d]==0) { ++pt; n/=p[d]; dp*=p[d]; }
			nd*=(pt+1); sum=((dp-1)/(d[p]-1)*sum)%MOD;
		}
		fout<<nd<<" "<<sum<<"\n";
	}
	fin.close(); fout.close();
	return 0;
}