Cod sursa(job #582387)

Utilizator informatician28Andrei Dinu informatician28 Data 15 aprilie 2011 12:10:07
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 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<=maxim;i++)
	prim[i]=1; 
for(i=2;i<=maxim;i++)
	if(prim[i]) 
		for(j=i+i;j<=maxim;j+=i)
			prim[j]=0;
}
int main()   
{ int t,fm,nrd,suma,v[1001],ok; 

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++) 
{  nrd=suma=1; ok=0;
 for(i=2;i*i<=v[j];i++) 
 {fm=0;
	 if(v[j]%i==0 && prim[i]) 
      {while(v[j]%i==0) {v[j]/=i; fm++;}
nrd*=(fm+1); suma*=(pow(i,(fm+1))-1)/(i-1);
      }
	  
	  if(prim[v[j]] && ok==0) {fm=1; nrd*=(fm+1); suma*=(pow(v[j],(fm+1))-1)/(v[j]-1);
	                 ok=1;}
	   
 }
g<<nrd<<" "<<suma%9973<<'\n';} return 0;
}