Cod sursa(job #633661)

Utilizator suzanicaSuzanica Mihu suzanica Data 14 noiembrie 2011 13:27:19
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;

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

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

void desc(long long n)
{
	int i;
	long long p,q,nr=1,s=1;
	for (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;
	}
	g<<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;
	f>>t;
	while (t--)
	{
		f>>n;
		desc(n);
	}
	return 0;
}