Cod sursa(job #650636)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 18 decembrie 2011 16:31:49
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
#include<math.h>
FILE*f=fopen("ssnd.in","r");
FILE*g=fopen("ssnd.out","w");
int n,prim[100005],v[100005],i,q,j,k,y,x,h,r,u,s,nr,a[100005],p[100005];
void d(int t){
	int j=1;
	q=t;
	r=0;
	while(q!=0 && j<=q){
		h=0;
		if(q%prim[j]==0){
			r++;
			while(q%prim[j]==0){
				h++;
				q/=prim[j];
			}
			a[r]=h;
			p[r]=prim[j];
		}
		j++;
	}
}
int main (){
	k=0;
	for(i=2;i<=10000;i++){
		if(!v[i]){
			k++;
			prim[k]=i;
			for(j=i+i;j<=10000;j+=i)
				v[j]=1;
		}
	}
	fscanf(f,"%d",&n);
	for(u=1;u<=n;u++){
		fscanf(f,"%d",&y);
		d(y);
		nr=1;
		s=1;
		for(i=1;i<=r;i++){
			nr*=(a[i]+1);
			double  dd=pow(p[i],a[i]+1);
			dd=trunc(dd);
			s*=(dd-1)/(p[i]-1);
		}
		fprintf(g,"%d %d\n",nr,s%9973);
	}
	fclose(g);
	fclose(f);
	return 0;
}