Cod sursa(job #639872)

Utilizator pandreeaePopescu Andreea pandreeae Data 24 noiembrie 2011 09:14:20
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <cmath>
using namespace std;

int main()
{
	long long nr, sum, n, x, t, i, j, exp, aux;
	bool v[1000001]={1};
	ifstream fin ("ssnd.in");
	ofstream fout ("ssnd.out");
	for(int i=3;i<=1000000;i+=2){
	if(v[i]==1){
		for(int j=2*i; j<=1000000; j+=i)
			v[j]=0;}}
	fin>>n;
	
 for(j=1;j<=n;j++){
		fin>>x;
		aux=sqrt((float)x);
		nr=sum=1;
		for(i=3; x!=1 && i<=aux ;i+=2){
			if(v[i]==0 || x%i!=0)
				continue;
			exp=1;
			t=i;
			while(x%i==0){
				exp++;
				x=x/i;
				t=t*i;}
			nr*=exp;
			sum*=(t-1)/(i-1);
		}
		if(x%2==0){
				exp=1;
				t=2;
				while(x%2==0){
					exp++;
					x=x/2;
					t=t*2;}
				nr*=exp;
				sum*=(t-1);}
		
		if(x!=1){
			sum*=(x*x-1)/(x-1);
			nr*=2;}
		
		sum=sum%9973;
		fout<<nr<<' '<<sum<<endl;}
 return 0;
}