Cod sursa(job #946511)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 4 mai 2013 17:19:46
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <cmath>
#define MAX_N
using namespace std;
int a[1000000],kr,i,j,x,n,e,nrdiv,v[1001],Max,sd,ce,p,cx;
bool ok;

int main ()
{ifstream f("ssnd.in");
ofstream g("ssnd.out");
f>>n;
for (i=1; i<=n; i++) {f>>v[i]; if (v[i]>Max) Max=v[i];}
kr=1; a[1]=2;
for (i=3; i<=Max; i=i+2) {
    ok=true;
    for (j=1; j<=sqrt(i*1.0); j++)
        if (i%a[j]==0) ok=false;
    if (ok==true) {kr++; a[kr]=i;}
}

for (j=1; j<=n; j++){
    x=v[j]; nrdiv=1; sd=1;
    for (i=1; a[i]*a[i]<=x && x>1; i++) {
        e=0;
        while (x%a[i]==0) {e++; x/=a[i];}
        nrdiv=nrdiv*(e+1);

            while (e!=0) {
                ce=e; p=1;
                while (ce!=0) {
                    p=p*a[i];
                    ce--;
                    }
                sd=sd+p;
                e--;
            }
    }
    if (x>1) {nrdiv=nrdiv*(1+1); sd=sd+x; cx=x;
     //   while (x!=0) { ce=x; p=1; while(ce!=0) {p=p*cx; ce--;} sd=sd+p; x--; }
    }
    g<<nrdiv<<" "<<sd<<" "<<'\n';
}
return 0;
}