Informatică, întrebare adresată de biancarebecca946, 8 ani în urmă

Se consideră un șir a[1], a[2],…, a[n] de numere naturale nenule.

Cerința
Să se determine câte perechi de indici (i, j), 1 ≤ i < j ≤ n, există cu proprietatea că suma a[i] + a[j] este egală cu o putere a lui 2.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale nenule, separate prin spații.

Date de ieșire
Programul va afișa pe ecran un singur număr natural reprezentând numărul de perechi de indici distincți (i, j) cu proprietatea că suma a[i] + a[j] este egală cu o putere a lui 2

Răspunsuri la întrebare

Răspuns de Petruccinator
0

// Coroana te rog

// Manipularea biturilor in timp constant

// Cu bucle - O(n^2) curat

#include <iostream>

int main() {

size_t suma, n, *v, c = 0;

std::cin >> n;

v = new size_t[n];

for (size_t i = 0; i < n; ++i)

    std::cin >> v[i];

   

for (size_t j, i = 0; i < n - 1; ++i)

    for (j = i + 1; j < n; ++j) {

        suma = v[i] + v[j];  

        c += !(suma & (suma - 1));

    }

   

std::cout << c;

delete[] v;

}


biancarebecca946: il poți face la un nivel de începător, te rog? nu înțeleg nimic de acolo :)... clasa a9a, căutare binara
Petruccinator: Operatiile binare si buclele sunt de rangul tau. Cred ca trebuie sa mai inveti informatica. Comportamentul tau merita un flag, nu raspunsul meu. Nu ti-ai specificat nivelul tau de cunoastere in intrebare. Cautarea binara tot nu era mentionata.
biancarebecca946: Acesta este nivelul la care fac eu orele de informatica la liceu, dacă erați atent ați fi văzut ca nu sunt la un nivel avansat :) Nu vreau sa jignesc pe nimeni, doar va întrebam dacă ma puteți ajuta cu o alta rezolvare...
Petruccinator: De cand buclele si operatiile & si ! sunt de nivel avansat? In limbajele simple, precum Pascal si Scratch, tot asa metode sunt. Am citit foarte atent intrebarea ta, si nu era scris nimic despre "cautarea binara".
biancarebecca946: eu nu știu sa folosesc size, std, etc
biancarebecca946: îmi pare rău dacă am fost neclara
biancarebecca946: totuși, ma puteți ajuta cu o rezolvare, mai simpla, în C++, cu o căutare binara, va rog frumos?
Alte întrebări interesante