Cod sursa(job #726538)

Utilizator misinoonisim necula misino Data 27 martie 2012 12:19:14
Problema Suma si numarul divizorilor Scor 40
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");
int nrd,nr,d,nr1,nd,sd,n,i,t,j,v[100000];
long long p;
bool a[1000001];
int main()
{f>>t;
for(i=3;i<=1000;i=i+2)
	if(a[i]==0)
		for(j=i*i;j<=1000000;j=j+i)
			a[j]=1;
nr=1;
v[1]=2;
for(i=3;i<=1000000;i=i+2)
	if(a[i]==0)
		++nr,v[nr]=i;
for(i=1;i<=t;++i)
{f>>n;
sd=1;
nd=1;
for(d=1;d<=nr&&n!=1;++d)
{p=v[d];
nr1=0;
while(n%v[d]==0)
{++nr1;
p=p*v[d];
n=n/v[d];
}
sd=(sd*((p-1)/(v[d]-1)))%MOD;
nd=(nd*(nr1+1))%MOD;
}
if(n!=1)
	nd=(nd*2)%MOD,sd=(sd*((n*n-1)/(n-1)))%MOD;
g<<nd<<' '<<sd<<'\n';
}
f.close();
g.close();
return 0;
}