Genere los primeros K múltiplos de N usando operadores bit a bit

Dado un número entero N , la tarea es imprimir los primeros K múltiplos de N utilizando operadores bit a bit .

Ejemplos:

Entrada: N = 16, K = 7 
Salida: 
16 * 1 = 16 
16 * 2 = 32 
16 * 3 = 48 
16 * 4 = 64 
16 * 5 = 80 
16 * 6 = 96 
16 * 7 = 112
Entrada: N = 7, K = 10 
Salida: 
7 * 1 = 7 
7 * 2 = 14 
7 * 3 = 21 
7 * 4 = 28 
7 * 5 = 35 
7 * 6 = 42 
7 * 7 = 49 7 * 
8 = 56 
7 * 9 = 63 
7 * 10 = 70 
 

Acercarse:

Siga los pasos a continuación para resolver el problema: 
 

  • Iterar hasta K.
  • Para cada iteración, imprima el valor actual de N .
  • Luego, calcule la suma de 2 i para cada i- ésimo conjunto de bits de N. Agregue esta suma a N y repita desde el paso anterior.

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the first K
// multiples of N
void Kmultiples(int n, int k)
{
    int a = n;
 
    for (int i = 1; i <= k; i++) {
 
        // Print the value of N*i
        cout << n << " * " << i << " = "
             << a << endl;
        int j = 0;
 
        // Iterate each bit of N and add
        // pow(2, pos), where pos is the
        // index of each set bit
        while (n >= (1 << j)) {
 
            // Check if current bit at
            // pos j is fixed or not
            a += n & (1 << j);
 
            // For next set bit
            j++;
        }
    }
}
 
// Driver Code
int main()
{
    int N = 16, K = 7;
 
    Kmultiples(N, K);
 
    return 0;
}

Java

// Java program to implement
// the above approach
import java.util.*;
class GFG{
 
// Function to print the first K
// multiples of N
static void Kmultiples(int n, int k)
{
    int a = n;
 
    for (int i = 1; i <= k; i++)
    {
 
        // Print the value of N*i
        System.out.print(n+ " * " +  i+ " = "
             + a +"\n");
        int j = 0;
 
        // Iterate each bit of N and add
        // Math.pow(2, pos), where pos is the
        // index of each set bit
        while (n >= (1 << j))
        {
 
            // Check if current bit at
            // pos j is fixed or not
            a += n & (1 << j);
 
            // For next set bit
            j++;
        }
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 16, K = 7;
 
    Kmultiples(N, K);
}
}
 
// This code is contributed by Rohit_ranjan

Python3

# Python3 program to implement
# the above approach
           
# Function to print the first K
# multiples of N
def Kmultiples(n, k):
     
    a = n
     
    for i in range(1, k + 1):
         
        # Print the value of N*i
        print("{} * {} = {}".format(n, i, a))
        j = 0
         
        # Iterate each bit of N and add
        # pow(2, pos), where pos is the
        # index of each set bit
        while(n >= (1 << j)):
             
            # Check if current bit at
            # pos j is fixed or not
            a += n & (1 << j)
             
            # For next set bit
            j += 1
             
# Driver Code
N = 16
K = 7
 
Kmultiples(N, K)
 
# This code is contributed by Shivam Singh

C#

// C# program to implement
// the above approach
using System;
 
class GFG{
 
// Function to print the first K
// multiples of N
static void Kmultiples(int n, int k)
{
    int a = n;
 
    for(int i = 1; i <= k; i++)
    {
         
        // Print the value of N*i
        Console.Write(n + " * " + i +
                          " = " + a + "\n");
        int j = 0;
 
        // Iterate each bit of N and add
        // Math.Pow(2, pos), where pos is
        //  the index of each set bit
        while (n >= (1 << j))
        {
             
            // Check if current bit at
            // pos j is fixed or not
            a += n & (1 << j);
 
            // For next set bit
            j++;
        }
    }
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 16, K = 7;
 
    Kmultiples(N, K);
}
}
 
// This code is contributed by Amit Katiyar

Javascript

<script>
// javascript program to implement
// the above approach
// Function to print the first K
// multiples of N
function Kmultiples(n , k)
{
    var a = n;
 
    for (i = 1; i <= k; i++)
    {
 
        // Print the value of N*i
        document.write(n+ " * " +  i+ " = "
             + a +"<br>");
        var j = 0;
 
        // Iterate each bit of N and add
        // Math.pow(2, pos), where pos is the
        // index of each set bit
        while (n >= (1 << j))
        {
 
            // Check if current bit at
            // pos j is fixed or not
            a += n & (1 << j);
 
            // For next set bit
            j++;
        }
    }
}
 
// Driver Code
var N = 16, K = 7;
 
Kmultiples(N, K);
 
// This code contributed by Princi Singh
</script>
Producción: 

16 * 1 = 16
16 * 2 = 32
16 * 3 = 48
16 * 4 = 64
16 * 5 = 80
16 * 6 = 96
16 * 7 = 112

 

Complejidad temporal: O(Klog 2 N) 
Espacio auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por PranjalKumar4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *