Cod sursa(job #890393)

Utilizator XeBluePodaru Mihai XeBlue Data 25 februarie 2013 00:57:25
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#define R 9973
long long n, i, nr, p;
long long nrdiv(long long nr)
{
	long long p=0, div=1;
	while(nr%2==0)
	{
		p++;
		nr/=2;
	}
	div*=p+1;
	for(long long i=3;i*i<=nr;i+=2)
	{
		p=0;
		while(nr%i==0)
		{
			p++;
			nr/=i;
		}
		div*=p+1;
	}
	if(nr!=1)
		div*=2;
	return div;
}

long long sumadiv(long long nr)
{
	long long p=1, suma=1;
	for( long long i=2;i<=nr;i++)
	{
		p=1;
		while(nr%i==0)
		{
			p*=i;
			nr/=i;
		}
		suma*=(p*i-1)/(i-1)%R;
	}
	return suma;
}
		
int main()
{
	in >> n;
	for(i=1;i<=n;i++)
	{
		in >>nr;
		out << nrdiv(nr) << " ";
		out << sumadiv(nr)%R << "\n";
	}
	in.close();
	out.close();
	return 0;
}