Új hozzászólás Aktív témák

  • blaces
    tag

    Itt van egy ciklussal ... van helyette viszont rekurzió :DD
    (a ciklus gyorsabb)

    int factor(int x, int start, int depth)
    {
    int count = 0;
    int max = sqrt(x);
    int i;
    for(i = start; i <= max; i++)
    {
    div_t q = div(x, i);
    if (q.rem == 0)
    {
    count += (depth > 1) ? factor(q.quot, i, depth - 1) : 1;
    }
    }

    return count;
    }

    A feladat eredményét a factor(terfogat, 1, 3) adja.
    Ez az én gépemen (2.2GHz) kevesebb mint 5ms alatt lefut bármit is adtam be neki eddig. Na jó, 2 milliárdra már 12ms

    Igen a ciklus gyorsabb, az valóban nem jó neki. A 2 for ciklus megengedett...

    #include <stdio.h>


    int main(){

    int terfog;
    int i, j, k;
    int teglatestek=0;
    /*int rovidebb;*/

    scanf("%d", &terfog);
    /*rovidebb=terfog/2;*/

    for(i=1; i<=terfog/i; i++){
    if (!(terfog%i)){

    for(j=i; j<=terfog/j; j++){
    if (!(terfog%j)){
    k=terfog/(i*j);
    if(k>=j)
    teglatestek++;
    }
    }
    }
    }

    printf("%d\n", teglatestek);

    return 0;
    }

    Na így tudtam rövidíteni (a tegnapi fórumozásból így tudtam kivenni.), de most nem tudom, hogy hol a hiba, a példa esetekből a 254-re 3-t ad, holott 2-öt kéne adnia, a többire annyit ad amennyit illik neki.

Új hozzászólás Aktív témák