Cod sursa(job #761700)

Utilizator Andrei.XweCobzaru Adrian-Andrei Andrei.Xwe Data 27 iunie 2012 09:57:12
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
#include<cmath>
long long n,i,t,p[500001],j,k=0,nr,s,pt;
bool v[1000005];
void ciur()
{
	p[++k]=2;
	for(i=3;i<=1000005;i+=2)
		if(v[i]==0)
		{
			for(j=i*i;j<=1000005;j=j+i+i)
				v[j]=1;
			p[++k]=i;
		}
}
int main()
{
	ifstream fcin("ssnd.in");
	ofstream fcout("ssnd.out");
	ciur();
	fcin>>t;
	while(t--)
	{
		fcin>>n;
		nr=s=1;
		for(i=1;i<=k && p[i]*p[i]<=n;i++)
			if(n%p[i]==0)
			{
				pt=0;
				while(n%p[i]==0)
					n/=p[i],pt++;
				nr*=(pt+1);
				s=s*((long long)pow(p[i]*1.,pt+1.)-1)/(p[i]-1);
				s=s%9973;
			}
		if(n>1)
			nr*=2,s=s*(n+1)%9973;
		fcout<<nr<<" "<<s<<"\n";
	}
	return 0;
}