Dado un entero sin signo x. Redondee hacia arriba al siguiente múltiplo mayor de 8 usando solo operaciones bit a bit.
Ejemplos:
Input : 35 Output : 40 Input : 64 Output : 64 (As 64 is already a multiple of 8. So, no modification is done.)
Solución 1: primero sumamos 7 y obtenemos un número x + 7, luego usamos la técnica para encontrar el siguiente múltiplo más pequeño de 8 para (x+7). Por ejemplo, si x = 12, sumamos 7 para obtener 19. Ahora encontramos el siguiente múltiplo más pequeño de 19, que es 16.
Solución 2: un enfoque eficiente para resolver este problema usando la operación AND bit a bit es:
x = (x + 7 ) &(-8)
Esto redondeará x al siguiente múltiplo mayor de 8.
C++
// CPP program to find smallest greater multiple // of 8 for a given number #include <bits/stdc++.h> using namespace std; // Returns next greater multiple of 8 int RoundUp(int& x) { return ((x + 7) & (-8)); } int main() { int x = 39; cout << RoundUp(x); return 0; }
Java
// Java program to find smallest // greater multiple of 8 for // a given number import java.util.*; import java.lang.*; // Returns next greater // multiple of 8 class GFG { static int RoundUp(int x) { return ((x + 7) & (-8)); } // Driver Code public static void main(String args[]) { int x = 39; System.out.println(RoundUp(x)); } } // This code is contributed // by Akanksha Rai(Abby_akku)
Python 3
# Python 3 program to find # smallest greater multiple # of 8 for a given number # Returns next greater # multiple of 8 def RoundUp(x): return ((x + 7) & (-8)) # Driver Code x = 39 print(RoundUp(x)) # This code is contributed # by prerna saini
C#
// C# program to find smallest // greater multiple of 8 for // a given number using System; // Returns next greater // multiple of 8 class GFG { static int RoundUp(int x) { return ((x + 7) & (-8)); } // Driver Code public static void Main() { int x = 39; Console.WriteLine(RoundUp(x)); } } // This code is contributed // by SoumikMondal
PHP
<?php // PHP program to find smallest greater // multiple of 8 for a given number // Returns next greater // multiple of 8 function RoundUp($x) { return (($x + 7) & (-8)); } // Driver Code $x = 39; echo RoundUp($x); // This code is contributed // by Akanksha Rai(Abby_akku) ?>
Javascript
<script> // Javascript program to find smallest // greater multiple of 8 for // a given number // Returns next greater // multiple of 8 function RoundUp(x) { return ((x + 7) & (-8)); } let x = 39; document.write(RoundUp(x)); </script>
40
Complejidad de tiempo: O(1)
Complejidad de espacio: O(1)
Solución 3:
Un enfoque eficiente para resolver este problema es usar operadores de desplazamiento, ya que el siguiente mayor múltiplo de 8 se puede obtener como el producto de 8 y (num + 7) / 8.
C++
// CPP program to find smallest greater multiple // of 8 for a given number #include <bits/stdc++.h> using namespace std; // Returns next greater multiple of 8 int RoundUp(int& x) { return ((x + 7) >> 3) << 3; } //Driver Code int main() { int x = 39; //Function call cout << RoundUp(x); return 0; } //This code is contributed by phasing17
Javascript
// JavaScript program to find smallest greater multiple // of 8 for a given number // Returns next greater multiple of 8 function RoundUp(x) { return ((x + 7) >> 3) << 3; } // Driver Code let x = 39; // Function call console.log(RoundUp(x)); // This code is contributed by phasing17
40
Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA