Cod sursa(job #494102)

Utilizator stinkyStinky si Grasa stinky Data 20 octombrie 2010 19:32:17
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>

const int r = 9973;

int numar(long long n)
{
	int i,p,nr = 1;
	for(i=2 ; (long long)i*i <= n ; ++i)
	{
		for(p=0 ; n%i == 0 ; n/=i)
			++p;
		nr *= (p + 1);
	}
	if(n != 1)
		nr <<= 1;
	return nr;
}

int suma(long long n)
{
	int i;
	long long s = 1,p;
	for(i=2 ; (long long)i*i <= n ; ++i)
	{
		for(p=1 ; n%i==0 ; n/=i)
			p *= i;
		s *= (long long)(p*i - 1) / (i - 1);
		s %= r;
	}
	if(n != 1)
		s *= n + 1;
	return s%r;
}

int main()
{
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
	int t;
	long long n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%lld",&n);
		printf("%d %d\n",numar(n),suma(n));
	}
	return 0;
}