Cod sursa(job #471327)

Utilizator ChallengeMurtaza Alexandru Challenge Data 18 iulie 2010 09:39:00
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

using namespace std;

const char InFile[]="ssnd.in";
const char OutFile[]="ssnd.out";

ifstream fin(InFile);
ofstream fout(OutFile);

const long long MOD=9973;

int t,p,k;
long long nr, s, d;

long long pow(int n, int k)
{
	int rez=1;
	for(;k;k>>=1)
	{
		if(k&1)
		{
			rez=(rez*n)%MOD;
		}
		n=(n*n)%MOD;
	}
	return rez%MOD;
}

int main()
{
	fin>>t;
	for(register int i=0;i<t;++i)
	{
		fin>>nr;
		p=2;
		k=0;
		s=d=1;
		while(nr>1)
		{
			k=0;
			while(nr%p==0)
			{
				++k;
				nr/=p;
			}
			if(k)
			{
				s=(s*((pow(p,k+1)-1)/(p-1)))%MOD;
				d=(d*(k+1))%MOD;
			}
			++p;
		}
		fout<<d<<" "<<s<<"\n";
	}
	fin.close();
	fout.close();
	return 0;
}