Cod sursa(job #494413)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 21 octombrie 2010 17:08:33
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<cstdio>
#define MOD 9973
#define LL long long
void solve(long long x)
{
	int nrdiv=1,sdiv=1;
	for(int i=2;(long long)i*i<=x;i++)
		if(x%i==0)
		{
			long long put=1
			int nrp=0;
			while(x%i==0)
				nrp++,put*=(LL)i, x/=i;
			nrdiv*=(nrp+1);
			sdiv*=(((put*(LL)i-1)/((LL)i-1))%MOD);
			sdiv%=MOD;
		}
	if(x>1)
	{
		nrdiv*=2;
		sdiv*=((((LL)x*x-1)/(x-1))%MOD);
		sdiv%=MOD;
	}
	printf("%d %d\n",nrdiv,sdiv);
}
int main()
{
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		long long x;
		scanf("%lld",&x);
		solve(x);
	}
	return 0;
}