Cod sursa(job #742216)

Utilizator mihai96alexOprea Mihai Alexandru mihai96alex Data 29 aprilie 2012 00:53:05
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<cmath>
#include<bitset>
#define MAX 1000005
using namespace std;

long long d,nr,c,s,n,a;
int t;
int p[100005];
bitset <MAX> v;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

void ciur()
{
	v[1]=1;
	for(int i=2;i<MAX;i++)
	{
		if(v[i]==0)
		{
			p[++p[0]]=i;
			for(int j=i+i;j<=MAX;j+=i)
				v[j]=1;
		}
	}
}

int main()
{
	fin>>t;
	ciur();
	for(int x=1;x<=t;x++)
	{
		fin>>n;s=nr=1;
		for(int i=1;(long long)p[i]*p[i]<=n;i++)
		{
			if(n%p[i]) continue;
			c=0;a=p[i];
				while(n%p[i]==0)
					n/=p[i],c++,a=a*p[i];
			nr*=c+1;
			s*=(a-1)/(p[i]-1)%9973;
		}
			if(n>1)
			nr*=2,s*=(n+1)%9973;
		fout<<nr<<" "<<s%9973<<"\n";
	}
	
}