Cod sursa(job #651789)

Utilizator geniucosOncescu Costin geniucos Data 21 decembrie 2011 16:59:14
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
using namespace std;
int aux,nr,s,imn,i10,p,t10,i,j,maxi,a[1000005],d[1003];
int det_put(int b,int e)
{
	int k;
	int p1=1;
	for(k=1;k<=e;k++)
		p1=p1*b;
	return p1;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t10);
for(i=1;i<=t10;i++)
{
	scanf("%d",&d[i]);
	if(d[i]>maxi) maxi=d[i];
}
a[1]=1;
for(i=1;i*i<maxi;i++)
	;
maxi=i;
for(i=2;i<=maxi;i++)
	if(a[i]==0)
	{
		if(i*i<=maxi) imn=i*i;
		else imn=maxi;
		for(j=i*2;j<=i*i;j=j+i)
			a[j]=1;
	}
for(i10=1;i10<=t10;i10++)
{
	p=1;
	s=1;
	aux=d[i10];
	for(j=1;j<=aux;j++)
		if(a[j]==0&&aux%j==0)
		{
			nr=0;
			while(aux%j==0)
			{
				aux=aux/j;
				nr++;
			}
			p=p*(nr+1);
			s=(s*(det_put(j,nr+1)-1)/(j-1))%9973;
		}
	printf("%d %d\n",p,s);
}
return 0;
}