﻿#include <iostream>
#include <cmath>
using namespace std;

/*
    Feladatok - Rekurzió - Divide et impera

    1. Írjunk meg három változatát annak a függvénynek, amely meghatározza
       adott tömb legnagyobb prímszám elemét.
            a) iteratívan (rekurzió nélkül)
            b) rekurzívan egy-egy elem leválasztásával (pl. az utolsó elem
               kezelése külön)
            c) oszd meg és uralkodj stratégiával (minden lépésben kettéosztva
               a tömböt)

    2. Határozzuk meg egy adott 1-nél nagyobb természetes szám legkisebb
       valódi osztóját
            a) tetszõleges módszerrel
            b) ciklusok használata nélkül (rekurzívan)

    3. (+pont) Adottak egy n csúcsú poligon pontjai a körbejárás sorrendjében.
       (Pontonként 2-2 valós szám, az x és y koordináták.) Olvassuk be a
       koordinátákat két tömbbe (x[] és y[]), majd számítsuk ki a poligon
       kerületét
            a) iteratívan
            b) rekurzívan (ciklusok használata nélkül)

            Pl. pontok: (4,6), (7,2), (12,3), (11,8), (9,5), (7,8)
                kerület: 26.0146928536
*/


/*
    0. Házi volt (+pont)
    Adott az A természetes szám. Határozzuk meg azt a legnagyobb n természetes
    számot, amelyre n*n*n + gyök(n) nem nagyobb A-nál.
*/
int feladat0(int A)
{
    int bal = 0, jobb = A;

    while (bal < jobb) {
        long long kozep = (bal + jobb + 1) / 2;

        if (kozep*kozep*kozep + sqrt(kozep) <= A) {
            bal = kozep;
        }
        else {
            jobb = kozep-1;
        }
    }

    return bal;
}

int main()
{
    cout << "0: " << feladat0(0) << endl;
    cout << "66: " << feladat0(66) << endl;
    cout << "100: " << feladat0(100) << endl;
    cout << "1000: " << feladat0(1000) << endl;
    cout << "10000: " << feladat0(10000) << endl;
    return 0;
}
