Cod sursa(job #581807)

Utilizator informatician29kill03 informatician29 Data 14 aprilie 2011 16:45:52
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>   

using namespace std;   
ifstream f("ssnd.in");   
ofstream g("ssnd.out");   
long long prim[101];  
void ciur() 
{long long a,b,q; 
q=10000;
for(a=2;a*a<=q;a++)     
prim[a]=1; 
for(a=2;a*a<=q;a++) 
if(prim[a])      
for(b=a+a;b*b<=q;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 n,nr,suma,j,i; 
int t,fm; 
f>>t;    
ciur();
for(j=1;j<=t;j++) 
{ f>>n; nr=suma=1; 
if(prim[n]) 
{nr*=2; suma*=(1+n);} 
else
{i=2;   
do
{fm=0;


while(n%i==0)       
{fm++;        
n/=i;}       


nr*=(fm+1); 
suma*=(powA(i,fm)-1)/(i-1);
if(prim[n]==0 ) i++; 
else i=n;

}  
while(n!=1);
}
g<<nr<<" "<<suma%9973<<'\n';} 
}