Cod sursa(job #581547)

Utilizator informatician28Andrei Dinu informatician28 Data 14 aprilie 2011 12:23:01
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>  
#include<cmath>
using namespace std;  
ifstream f("ssnd.in");  
ofstream g("ssnd.out");  
char prim[1000]; 
void ciur(long long nr)
{int a,b;
for(a=2;a<=sqrt(nr);a++)
	prim[a]=1;
for(a=2;a<=sqrt(nr);a++)
	if(prim[a]) 
	for(b=a*a;b<=sqrt(nr);b+=a) 
		prim[b]=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 nrdiv,sumadiv,j,i,max; int t,fm,v[1001];
f>>t;   
for(j=1;j<=t;j++)  
{f>>v[j]; if(max<v[j]) max=v[j];} 
ciur(max);
for(j=1;j<=t;j++)
{ nrdiv=sumadiv=1; 
if(prim[v[j]]) {nrdiv*=2; sumadiv*=(1+v[j]);} else 
	{i=2;  
do{fm=0;
while(v[j]%i==0 )      
{fm++;       
v[j]/=i;}      
nrdiv*=(fm+1);        
sumadiv*=(powA(i,fm)-1)/(i-1); 
i++;
}while(v[j]!=1);  
}g<<nrdiv<<" "<<sumadiv%9973<<'\n';}

}