Cómo hacer un programa que imprima potencias de 2 hasta n en C ++

Suena extraño, pero puedes usar el doble, no solo int. ¿Por qué? Comprobar formato de punto flotante de doble precisión

Para potencias de dos no hay dígitos que se pierdan debido a la precisión, ya que es solo un bit y toda la información se almacena en exponente, que puede ser hasta 1023, que es mucho más que 63 para uint64_t.

Puede comenzar con 1 y simplemente multiplicarlo por 2 e imprimirlo. Dependiendo de su máquina, la multiplicación de números en coma flotante no es la operación más barata, por lo tanto, también podría explotar la estructura del doble y modificar exactamente los bits necesarios, digamos mediante la suma de enteros.

  #include 
 #incluye 

 union doubleUnion {
     doble d;
     uint64_t i;
 };

 int main () {
     doubleUnion num;
     const uint64_t expbit = uint64_t (1) << 52;
     num.d = 1;
     para (int i = 0; i <(1 << 10); i ++) {
         std :: cout << std :: fijo << std :: setprecision (0) << num.d << std :: endl;
         num.i + = expbit;
     }   
 }

Este código podría ser un ejemplo de cómo lograr esto. Da un número entre 1 y 2 ^ 1023 y lo hace a alta velocidad.

es muy simple
#include
#include
usando el espacio de nombres estándar;
int main () {
largo largo int z = 1, n;
cin >> n;
if (n == 1) cout << 1 << "\ n";
más si (n> = 2) {
para (i = 0; z <= n; ++ i) {
// z = z * 2
// z = pow (2, i);
z = z << 1;
cout << z << "";
}
}
devuelve 0;
}

Gracias por A2A.

Es simple….

#include
usando el espacio de nombres estándar;
int main ()
{
largo largo int ans = 1;
int cuenta = 0;
int n;
cin >> n;
while (cuenta {
cout << ans;
ans = ans * 2;
recuento ++;
}
devuelve 0;
}

esta solución funcionará hasta el poder de 63
es decir, 2 ^ 63; es decir, el tamaño de long long int

usar el operador de desplazamiento a la izquierda en lugar de la función pow o la multiplicación hará que las operaciones sean mucho más rápidas

  /* Poder de dos */
 #include 
 usando el espacio de nombres estándar;
 int main (nulo)
 {
        int n;
        long long var = 1; // variable temporal donde se guardarán las respuestas
        cin >> n; // entrada del usuario para n
        while (n -) // ejecutando el bucle n veces para imprimir 2 ^ 1 a 2 ^ n
        {
             var = (var << 1); // desplazamiento a la izquierda
             cout << var << endl; // imprimiendo respuesta.
         }
         devuelve 0;
 }

Use la función de potencia pow incorporada en cmath
#include
#include
usando el espacio de nombres estándar;
int main ()
{
int i = 0;
int n;
cout << "Hasta qué términos \ n";
cin >> n;
mientras que (i! = n)
{
i ++;
cout << pow (2, i) << "";

}
}

k = 1;
para (i = 1; i <= n; i ++)
{k = k * 2; cout << k << endl;}

More Interesting

¿Qué técnicas se utilizan para calcular las probabilidades de caída de elementos en los juegos?

Cómo resolver este problema sin obtener un TLE

¿Cuál es la diferencia entre los algoritmos de programación de tareas y los algoritmos de equilibrio de carga (estáticos y dinámicos)?

Cómo verificar si un cuadrado dibujado está cerrado (tiene los 4 lados dibujados)

¿Cuáles son algunos proyectos desafiantes en algoritmo genético para principiantes?

¿Se puede resolver un cubo de Rubik sin sus algoritmos?

Cómo crear una matriz de intervalos de fechas a partir de una matriz de fechas estáticas en JavaScript

¿Qué algoritmos debo saber para desarrollar una aplicación web sin conexión primero?

¿Cómo es la búsqueda tan rápida por los motores de búsqueda? Generan millones de instrucciones en menos de un segundo. ¿Qué algoritmo usan?

Cómo encontrar la complejidad del tiempo en: T (n) = n * (T (n-1) + O (n))

¿Son los algoritmos de los programas de computadora, o consisten en algoritmos, o ambos?

¿Cuál es la mayor complejidad de tiempo que cualquier juez en línea puede aceptar como O (10 ^ 9) o algo en términos de números?

¿Cuál es la relación entre los algoritmos y las IA (modernas)?

¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?

¿Cuál es el programa C para encontrar la subsecuencia repetida más larga en un texto dado?