Cod sursa(job #617383)

Utilizator andreea29Iorga Andreea andreea29 Data 14 octombrie 2011 19:16:37
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;

const int N=1000001,mod=9973;
int v[N];
bool c[N];

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

void desc(long long n)
{
	long long p,q,nr=1,s=1;
	for (int i=1;v[i]*v[i]<=n;i++)
		if (n%v[i]==0)
		{
			for (p=1,q=v[i];n%v[i]==0;n/=v[i],p++,q*=v[i]);
			s=s*(q-1)/(v[i]-1)%mod;
			nr*=p;
		}
	if (n!=1)
	{
		s=s*(n+1)%mod;
		nr*=2;
	}
	out<<nr<<" "<<s<<"\n";
}

void ciur()
{
	c[0]=c[1]=true;
	for (int i=2;i*i<N;i++)
		if (!c[i])
			for (int j=i*i;j<N;j+=i)
				c[j]=true;
	for (int i=2;i<N;i++)
		if (!c[i])
			v[++v[0]]=i;
}

int main()
{
	ciur();
	long long t,n;
	in>>t;
	while (t--)
	{
		in>>n;
		desc(n);
	}
	return 0;
}