Cod sursa(job #582027)

Utilizator informatician29kill03 informatician29 Data 14 aprilie 2011 20:05:39
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>  
#include<cmath>
using namespace std;  
ifstream f("ssnd.in");  
ofstream g("ssnd.out");  
long long prim[10001]; 
long long ma,i,j;
void ciur(long long num)
{long long q,w; 
for(q=2;q*q<=num;q++)    
prim[q]=1;
for(q=2;q*q<=num;q++)
if(prim[q])     
for(w=q+q;w*w<=num;w+=q)          
prim[w]=0; 
}   
long long putere(long long exp)
{long long k,p;
p=1;
for(k=1;k<=exp;k++) 
	p*=i; 
return p; 
}
int main()  
{ long long nr,suma;
int t,fm,v[1001];
f>>t;   
for(j=1;j<=t;j++)
{f>>v[j]; if(ma<v[j]) ma=v[j];} ciur(ma);
for(j=1;j<=t;j++)
{ nr=suma=1;
i=2;   
do
{fm=0;
while(v[j]%i==0)      
{fm++;       
v[j]/=i;}      
nr*=(fm+1);
suma*=(putere(fm+1)-1)/(i-1);

if(prim[v[j]]==0 ) i++; 
else i=v[j];
} 
while(v[j]!=1);
g<<nr<<" "<<suma%9973<<'\n';}
}