Cod sursa(job #649266)

Utilizator vlcmodanModan Valentin vlcmodan Data 15 decembrie 2011 17:42:14
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int v[1000001],prim[100000];

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