Rezolvare completă PbInfo #1240 Ab3

Cerința

Se se determine pentru n numere a valoarea b maximă astfel încât b3 + b ≤ a.

Date de intrare

Fișierul de intrare ab3.in conține pe prima linie numărul n, iar pe următoarele n linii câte un număr a.

Date de ieșire

Fișierul de ieșire ab3.out va conține n linii cu câte un număr fiecare, răspunsul la fiecare întrebare.

Restricții și precizări

  • 1 ≤ n ≤ 100.000
  • 0 ≤ a ≤ 1018
  • Pentru 40% din teste, se garantează că n * b ≤ 106
  • Atenție la limita de memorie!

Exemple:

ab3.in

5
1 
9 
36
27
89

ab3.out

0
1
3
2
4

Explicație

13 + 1 = 2
23 + 2 = 10
33 + 3 = 30
43 + 4 = 68
53 + 5 = 130

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Ab3:

#include <fstream>
using namespace std;

ifstream fin ("ab3.in");
ofstream fout ("ab3.out");

typedef unsigned long long ull;

int n;
ull a, b, st = 1 << 19;

int main() {
    fin >> n;
    for (int i = 0; i < n; ++i) {
        fin >> a;
        ull b = 0;
        for (ull step = st; step; step >>= 1)
            if ((b + step) * (b + step) * (b + step) +(b + step) <= a)
                b += step;
        fout << b << "\n";
    }
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1240 Ab3

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1240 Ab3 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!