Cod sursa(job #581748)

Utilizator informatician29kill03 informatician29 Data 14 aprilie 2011 15:48:19
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>   
#include<cmath>
using namespace std;   
ifstream f("ssnd.in");   
ofstream g("ssnd.out");   
long long prim[1000002];  
long long ma;
void ciur() 
{long long a,b; int o;
o=sqrt(ma);
for(a=2;a<=o;a++)     
prim[a]=1; 
for(a=2;a<=o;a++) 
if(prim[a])      
for(b=a*a;b<=o;b+=a)           
prim[b]=0;  
}    
long long powA(int baza, int exponent)  
{int k; long long putere;  
putere=1;   
for(k=1;k<=exponent+1;k++)       
putere*=baza;  
return putere;   
}  
int main()   
{ long long nr,suma,j,i; int t,fm,v[100]; 
f>>t;    
for(j=1;j<=t;j++)
{f>>v[j]; if(ma<v[j]) ma=v[j];} ciur();
for(j=1;j<=t;j++) 
{ nr=suma=1;  
if(prim[v[j]]) {nr*=2; suma*=(1+v[j]);} else
{i=2;   
do{fm=0; 
while(v[j]%i==0 )       
{fm++;        
v[j]/=i;}       
nr*=(fm+1);         
suma*=(powA(i,fm)-1)/(i-1);  
i++; 
}while(v[j]!=1);   
}g<<nr<<" "<<suma%9973<<'\n';} 
}