Cod sursa(job #582308)

Utilizator informatician28Andrei Dinu informatician28 Data 15 aprilie 2011 10:46:35
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>   
#include<math.h>
using namespace std;   
ifstream f("ssnd.in");   
ofstream g("ssnd.out");   
int prim[1000001],i,j,maxim;  
void ciur() 
{for(i=2;i*i<=maxim;i++)
prim[i]=1;
for(i=2;i*i<=maxim;i++) 
if(prim[i])      
for(j=i*i;j*j<=maxim;j+=i)           
prim[j]=0;  }    
int main()   
{ int t,fm,nr,suma,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++) 
{  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*=(pow(i,(fm+1))-1)/(i-1); if(prim[v[j]]==0) i++;   else i=v[j];  }  
while(v[j]!=1); 
}g<<nr<<" "<<suma%9973<<'\n';} return 0;
}