Comprobar si un número se puede representar como suma de potencias distintas de cero de 2

Dado un número entero N , la tarea es verificar si N puede representarse como la suma de potencias de 2 donde todas las potencias son > 0, es decir , 2 0 no pueden contribuir a la suma.
Ejemplos: 
 

Entrada: N = 10 
Salida:
2 3 + 2 1 = 10
Entrada: N = 9 
Salida:
 

Planteamiento: Hay dos casos: 
 

  1. Cuando N es par, siempre se puede representar como la suma de potencias de 2 cuando potencia > 0 .
  2. Cuando N es impar, nunca se puede representar como la suma de potencias de 2 si 2 0 no está incluido en la suma.

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

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that return true if n
// can be represented as the sum
// of powers of 2 without using 2^0
bool isSumOfPowersOfTwo(int n)
{
    if (n % 2 == 1)
        return false;
    else
        return true;
}
 
// Driver code
int main()
{
    int n = 10;
    if (isSumOfPowersOfTwo(n))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}

Java

// Java implementation of the approach
class GFG {
 
    // Function that return true if n
    // can be represented as the sum
    // of powers of 2 without using 2^0
    static boolean isSumOfPowersOfTwo(int n)
    {
        if (n % 2 == 1)
            return false;
        else
            return true;
    }
 
    // Driver code
    public static void main(String args[])
    {
        int n = 10;
        if (isSumOfPowersOfTwo(n))
            System.out.print("Yes");
        else
            System.out.print("No");
    }
}

Python3

# Python3 implementation of the approach
 
# Function that return true if n
# can be represented as the sum
# of powers of 2 without using 2^0
def isSumOfPowersOfTwo(n):
    if n % 2 == 1:
        return False
    else:
        return True
 
# Driver code
n = 10
if isSumOfPowersOfTwo(n):
    print("Yes")
else:
    print("No")
 
# This code is contributed
# by Shrikant13

C#

// C# implementation of the approach
using System;
 
class GFG {
 
    // Function that return true if n
    // can be represented as the sum
    // of powers of 2 without using 2^0
    static bool isSumOfPowersOfTwo(int n)
    {
        if (n % 2 == 1)
            return false;
        else
            return true;
    }
 
    // Driver code
    public static void Main()
    {
        int n = 10;
        if (isSumOfPowersOfTwo(n))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}

PHP

<?php
// PHP implementation of the approach
 
// Function that return true if n
// can be represented as the sum
// of powers of 2 without using 2^0
function isSumOfPowersOfTwo($n)
{
    if ($n % 2 == 1)
        return false;
    else
        return true;
}
 
// Driver code
$n = 10;
if (isSumOfPowersOfTwo($n))
    echo("Yes");
else
    echo("No");
 
// This code is contributed
// by Code_Mech
?>

Javascript

<script>
// Javascript implementation of the approach
 
// Function that return true if n
// can be represented as the sum
// of powers of 2 without using 2^0
function isSumOfPowersOfTwo(n)
{
    if (n % 2 == 1)
        return false;
    else
        return true;
}
 
// Driver code
var n = 10;
if (isSumOfPowersOfTwo(n))
    document.write("Yes");
else
    document.write("No");
 
// This code is contributed by noob2000.
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *