Cod sursa(job #773463)

Utilizator misinoonisim necula misino Data 1 august 2012 18:53:10
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long i,x,t,nr,e,sum,n;
int v[500000];
bool a[1000001];
void ciur()
{int i,j;
v[1]=2;
for(i=3;i<=1000;i=i+2)
	if(a[i]==0)
		for(j=i*i;j<=1000001;j=j+i)
			a[j]=1;
nr=1;
for(i=3;i<=1000001;i=i+2)
	if(a[i]==0)
		++nr,v[nr]=i;
}

int main()
{f>>n;
ciur();
for(;n;--n)
{f>>x;
sum=nr=1;
for(i=1;v[i]*v[i]<=x;++i)
	if(x%v[i]==0)
	{e=1;
	t=v[i];
	while(x%v[i]==0)
	{t*=v[i];
	x/=v[i];
	++e;
	}
	nr*=e;
	sum*=((t-1)/(v[i]-1))%MOD;
	}
if(x!=1)
{nr*=2;
sum*=(x*x-1)/(x-1)%MOD;
}
g<<nr<<' '<<sum%MOD<<'\n';
}
return 0;
}