Cod sursa(job #777265)

Utilizator danalex97Dan H Alexandru danalex97 Data 11 august 2012 18:16:33
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

bool v[1000001];
int prim[100000];

void ciur()
{
	prim[0]=1;
	prim[1]=2;
	for(int i=3;i<=1000000;i+=2)
	{
		if(v[i]==0)
		{
			prim[++prim[0]]=i;
			for(int j=2*i; j<=1000000; j+=i)
				v[j]=1;
		}
	}
 }
 
 void desco(long long x)
 {
	long long nr, sum, t, i, exp1;
	nr=sum=1;
	for(i=1; prim[i]*prim[i]<=x ;i++)
		if(x%prim[i]==0)
		{
			exp1=1;
			t=prim[i];
			while(x%prim[i]==0)
			{
				exp1++;
				x=x/prim[i];
				t=t*prim[i];
			}
			nr*=exp1;
			sum*=(t-1)/(prim[i]-1)%9973;
		}
	
	if(x!=1)
		sum*=(x*x-1)/(x-1)%9973,
		nr*=2;
	fout<<nr<<' '<<sum%9973<<endl;
 }
 
int main()
{
	long long n, q;
	ciur();
	fin>>n;
	while(n--){
		fin>>q;
		desco(q);}
	return 0;
}