Răspuns :
Răspuns:
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream f("spower2.in");
ofstream g("spower2.out");
int Puteri[35], k;
int Create[35*35], nr, n, m;
int main ()
{
f >> n;
for(int i = 0; i <= 30; i++)
{
Puteri[i + 1] = pow(2,i);
m += 1;
}
for(int i = 1; i <= m; i++)
{
for(int j = i + 1; j <= m; j++)
{
Create[++k] = Puteri[i] + Puteri[j];
}
}
sort(Create + 1, Create + 1 + k);
int st , dr;
for(int i = 1; i <= n; i++)
{
f >> nr;
if(nr == 2 || nr == 1 || nr == 0) {
g << 3 <<" ";
continue;
}
for(int j = 1; j <= k; j++)
{
if(nr >= Create[j] && nr <= Create[j + 1])
{
if(nr == Create[j + 1] || nr == Create[j])
g << nr <<" ";
else g << Create[j + 1] <<" ";
break;
}
}
}
return 0;
}
Explicație:
Am calculat dinainte puterile si elementele din puterea perechii i , j apoi am cautat limitele stanga si dreapta unde se afla elementul si am afisat limita din dreapta, adica cea care e mai mare ;)
Aici ai codul facut pe un site de pe care poti copia codul fara erori, de obicei brainly are erori cand copiezi codul - https://pastebin.com/7PUpHYkK.
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!