Cod sursa(job #664550)

Utilizator roxana_savulescuSavulescu Roxana roxana_savulescu Data 20 ianuarie 2012 12:21:54
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<math.h>
using namespace std;
long long t,b,nr,nrdiv,suma,aux,x,prim[1000010],pute1,i,aux1,j;
bool ok,ch[1000010];
void ciur() { 
	prim[0]=2; nr=0;  
	for(i=1;i<=1000000;i++)  { 
		if(!ch[i]) 
		{ 
			prim[++nr]=2*i+1; 
			for(j=2*i*i+2*i;j<=1000000;j+=2*i+1) 
				ch[j]=true; 
		}
	} 
} 
long long putere(int r,int s) { 
	if (s==0) return 1; 
	if (s%2==0) { 
		 aux=putere(r,s/2); 
		return (aux*aux); 
	} 
	if (s%2==1) return (r*putere(r,s-1)); 
} 
int main(){
	ifstream f("ssnd.in");
	ofstream g("ssnd.out");
   f>>t;
	ciur();
	for (i=1;i<=t;i++){
		f>>b; 
		nr=-1;nrdiv=1;aux1=b;ok=true;suma=1;
		while (b!=1 ){
			nr++;
			if (b%prim[nr]==0){
				while (b%prim[nr]==0){
					x++;
					b=b/prim[nr];
				}
					nrdiv=nrdiv*(x+1);
					suma=(suma*((putere(prim[nr],x+1)-1)/(prim[nr]-1))%9973)%9973;
					x=0;
			}
		}
		g<<nrdiv<<" "<<suma<<"\n";
  
	}
	return 0;
}