PROBLEMA 2621 de pe pbifo. Va multumesc
Un număr natural M se numește număr spower2 dacă poate fi descompus astfel: M=2x+2y, cu x≠y. Exemplu: 6 este un număr spower2 (6=2+4), pe când 8 nu este.
Cerința
Se consideră un șir A de n numere naturale. Pentru fiecare element al șirului Ai să se determine cel mai apropiat număr spower2 mai mare sau egal cu Ai, unde 1≤i≤n.
Date de intrare
Fișierul de intrare spower2.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire spower2.out va conține pe prima linie n numere naturale, separate prin spațiu, ce reprezintă numerele spower2 asociate numerelor citite din fișier conform cerinței.
Restricții și precizări
1 ≤ n ≤ 100 000
numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000.000.000
Exemplu
spower2.in
6
14 8 5 19 1 6
spower2.out
17 9 5 20 3 6
Explicație
17=1+16, 9=1+8, 5=1+4, 20=4+16, 3=1+2, 6=2+4.
Răspunsuri la întrebare
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.
#include
#include
using namespace std;
ifstream f("spower2.in");
ofstream g("spower2.out");
int p[35];
int v[35*35],nr,n,m,d,aux,i,j,k;
int main()
{
f>>n;
for(i=0;i<=30;i++)
{
p[i+1]=pow(2,i);
m+=1;
}
for(i=1;i<=m;i++)
{
for(j=i+1;j<=m;j++)
{
v[++k]=p[i]+p[j];
}
}
sort (v+1,v+1+k);
for(i=1;i<=n ;i++)
{
f>>nr;
if(nr==2 || nr==1 || nr==0 )
{
g<<3<<" ";
}
continue;
for(j=1;j<=k;j++)
{
if(nr>=v[j] && nr<=v[j+1])
{
if(nr==v[j+1] || nr==v[j])
g< else
g< break;
}
}
}
return 0;
}