Cod sursa(job #581467)

Utilizator informatician28Andrei Dinu informatician28 Data 14 aprilie 2011 10:59:30
Problema Suma si numarul divizorilor Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>  
using namespace std;  
ifstream f("ssnd.in");  
ofstream g("ssnd.out");  
char prim[2000005];
int ciur(long long nr)
{ long long i,j;
for(i=2;i<=nr;i++)
	prim[i]=1;
for(i=2;i<=nr;i++)
	if(prim[i]) 
	{for(j=i*i;j<=nr;j+=i) 
		prim[j]=0; 
	}
}	
long long powA(long long baza, long long exponent) 
{long long k,putere; 
putere=1;  
for(k=1;k<=exponent+1;k++) 
    putere*=baza; 
return putere;  
} 
int main()  
{  long long n,nrdiv,sumadiv,j,fm,i; int t;
f>>t;   
for(j=1;j<=t;j++)  
{  
f>>n; ciur(n); nrdiv=sumadiv=1; 
if(prim[n]) {nrdiv*=2; sumadiv*=(1+n);} else 
	{i=2;  
do{fm=0;
while(n%i==0 )      
{fm++;       
n/=i;}      
nrdiv*=(fm+1);        
sumadiv*=(powA(i,fm)-1)/(i-1); 
i++;
}while(n!=1);  
}g<<nrdiv<<" "<<sumadiv%9973<<'\n';}

}