Cod sursa(job #1194252)

Utilizator G_DavidGherghita David G_David Data 3 iunie 2014 11:39:08
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;

const int CONST = 9973;

long long pow(long long x, long long y)
{
	long long p;
	if (y == 1)
		return x;
	p = pow(x, y/2);
	if (y % 2 == 0)
			return p * p;
	else 
		return p * p * x;
}

int main()
{
	long long t, n, s, card, div, c, i;
	
	ifstream infile ("ssnd.in");
	ofstream outfile ("ssnd.out");
	
	infile >> t;
	for (i = 0; i < t; i++)
	{
		infile >> n;
		
		div = 2;	
		s = 1;
		card = 1;
		
		while (n != 1)
		{
			c = 0;
			while (n % div == 0)
				{
					n /= div;
					c++;	
				}
			if (c > 0)
				{	
					s *= (((pow(div, c + 1) - 1) / (div - 1)) % CONST);
					s %= CONST;
					card *= (c + 1);	
				}
				div++;
		}
		
		outfile << card << " " << s << "\n";
	}
	outfile.close();
}