Cod sursa(job #582247)

Utilizator informatician29kill03 informatician29 Data 15 aprilie 2011 09:24:02
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>   
using namespace std;   
ifstream f("ssnd.in");   ofstream g("ssnd.out");   long long prim[10001],ma,i,j;  void ciur(long long num) {
for(i=2;i*i<=num;i++)     prim[i]=1; for(i=2;i*i<=num;i++) if(prim[i])      for(j=i*i;j*j<=num;j+=i)           
prim[j]=0;  }    long long putere(long long expo) {long long k,p; p=1; for(k=1;k<=expo;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; 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*=(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';} 
}