Cod sursa(job #581643)

Utilizator informatician28Andrei Dinu informatician28 Data 14 aprilie 2011 14:23:43
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<fstream>    
using namespace std;    
ifstream f("ssnd.in");    
ofstream g("ssnd.out");    
long long prim[1000001];   
int maxim; 
void ciur()  
{ int a,b; 
for(a=2;a*a<=maxim;a++)  
    
prim[a]=1;  
for(a=2;a*a<=maxim;a++)  
if(prim[a])   
for(b=a*a;b*b<=maxim;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; int t,p,k,putere,v[1001];  
f>>t;     
for(j=1;j<=t;j++) 
    
{f>>v[j]; if(maxim<v[j]) maxim=v[j];} ciur(); 
for(j=1;j<=t;j++) 
{ nrdiv=sumadiv=1; 
for(i=2;i*i<=v[j];i++) 
{p=0; 
if(v[j]%i==0 && prim[i]==1) 
{while(v[j]%i==0) 
     {v[j]/=i;
	  p++; 
	  }
nrdiv*=(p+1);
putere=1;
for(k=1;k<=p+1;k++) 
	putere*=i; 
sumadiv*=(putere-1)/(i-1); 
}

}g<<nrdiv<<" "<<sumadiv<<'\n';}  
}