Cod sursa(job #638906)

Utilizator pandreeaePopescu Andreea pandreeae Data 21 noiembrie 2011 21:13:01
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
using namespace std;
int main()
{
 ifstream in ("ssnd.in");
 ofstream out ("ssnd.out");
 int i, d, j, n, x, v[1000]={0}, exp ,nrdiv=1, sdiv=1, ok, t, l;
 in>>n;
 for(i=1;i<=100;i++){
	  ok=1;
	  x=i*2+1;
	  if(x==1||x%2==0) ok=0;
	  else{
		   for(d=3;d<x/2&&ok==1;d+=2)
			if(x%d==0) ok=0;}
	  if(ok==1) v[i]=1;}
 v[0]=1;
 for(i=1;i<=n;i++){
		in>>x;
		for(j=0;j<=(x-1)/2;j++){
			if(v[j]==0) continue;
			d=j*2+1;
			if(j==0)d=2;
			if(x%d==0){
				exp=1;
				l=d;
				while(x%d==0){
					exp++;
					x=x/d;
					l*=d;}
				t=(l-1)/(d-1);
				nrdiv=nrdiv*exp;
				sdiv=sdiv*t;}
		}
		out<<nrdiv<<' '<<sdiv<<endl;
		nrdiv=sdiv=1;
 }
 return 0;
}