Número máximo que se puede mostrar en la pantalla de siete segmentos usando N segmentos

Dado un entero positivo N . La tarea es encontrar el número máximo que se puede mostrar en una pantalla de siete segmentos usando N segmentos.
Pantalla de siete segmentos : una pantalla de siete segmentos (SSD), o indicador de siete segmentos, es una forma de dispositivo de pantalla electrónica para mostrar números decimales que es una alternativa a las pantallas de array de puntos más complejas.

 Los segmentos individuales de una pantalla de siete segmentos
Fuente de la imagen : Wikipedia

 
Ejemplos:
 

Input : N = 5 
Output : 71
On 7-segment display, 71 will look like:
_
 | |
 | |

Input : N = 4
Output : 11

Observe, el número que tiene una mayor cantidad de dígitos que otros números será mayor en valor. Entonces, intentaremos hacer un número con la máxima longitud posible (número de dígitos) usando segmentos ‘N’ dados. 
También observe, para aumentar la longitud del número, intentaremos usar menos segmento en cada dígito como sea posible. Entonces, el número ‘1’ usa solo 2 segmentos para representar un dígito. Ningún otro dígito usa menos de 2 segmentos. 
Entonces, en caso de que N sea par, la respuesta sería 1s N/2 número de veces. 
En caso de que N sea impar, no podemos usar todos los segmentos si hacemos 1s N/2 número de veces. Además, si usamos 3 segmentos para formar un dígito de 7 y (N-3)/2 números de 1, entonces el número formado tendrá un valor mayor que el número formado por N/2 números de 1. 
A continuación se muestra la implementación de este enfoque:  

C++

#include <bits/stdc++.h>
using namespace std;
 
// Function to print maximum number that can be formed
// using N segments
void printMaxNumber(int n)
{
    // If n is odd
    if (n & 1) {
        // use 3 three segment to print 7
        cout << "7";
 
        // remaining to print 1
        for (int i = 0; i < (n - 3) / 2; i++)
            cout << "1";
    }
 
    // If n is even
    else {
        // print n/2 1s.
        for (int i = 0; i < n / 2; i++)
            cout << "1";
    }
}
 
// Driver's Code
int main()
{
    int n = 5;
 
    printMaxNumber(n);
 
    return 0;
}

Java

// Java implementation of above approach
class GFG {
 
    // Function to print maximum number that
    // can be formed using N segments
    public static void printMaxNumber(int n)
    {
        // If n is odd
        if (n % 2 != 0) {
            // use 3 three segment to print 7
            System.out.print("7");
 
            // remaining to print 1
            for (int i = 0; i < (n - 3) / 2; i++)
                System.out.print("1");
        }
 
        // If n is even
        else {
 
            // print n/2 1s.
            for (int i = 0; i < n / 2; i++)
                System.out.print("1");
        }
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        int n = 5;
        printMaxNumber(n);
    }
}
 
// This code is contributed by princiraj1992

Python3

# Function to print maximum number that can be formed
# using N segments
def printMaxNumber(n):
     
    # If n is odd
    if (n % 2 == 1):
         
        # use 3 three segment to print 7
        print("7",end="");
 
        # remaining to print 1
        for i in range(int((n - 3) / 2)):
            print("1",end="");
 
    # If n is even
    else:
         
        # print n/2 1s.
        for i in range(n/2):
            print("1",end="");
 
# Driver's Code
n = 5;
printMaxNumber(n);
 
# This code contributed by Rajput-Ji

C#

// C# implementation of above approach
using System;
 
class GFG
{
 
    // Function to print maximum number that
    // can be formed using N segments
    public static void printMaxNumber(int n)
    {
        // If n is odd
        if (n % 2 != 0)
        {
            // use 3 three segment to print 7
            Console.Write("7");
 
            // remaining to print 1
            for (int i = 0; i < (n - 3) / 2; i++)
                Console.Write("1");
        }
 
        // If n is even
        else
        {
 
            // print n/2 1s.
            for (int i = 0; i < n / 2; i++)
                Console.Write("1");
        }
    }
 
    // Driver Code
    public static void Main(String[] args)
    {
        int n = 5;
        printMaxNumber(n);
    }
}
 
// This code has been contributed by 29AjayKumar

PHP

<?php
// PHP code implementation of above code
 
// Function to print maximum number that can be formed
// using N segments
function printMaxNumber($n)
{
    // If n is odd
    if ($n & 1)
    {
        // use 3 three segment to print 7
        echo "7";
 
        // remaining to print 1
        for ($i = 0; $i < ($n - 3) / 2; $i++)
            echo "1";
    }
 
    // If n is even
    else
    {
        // print n/2 1s.
        for ($i = 0; $i < $n / 2; $i++)
            echo "1";
    }
}
 
// Driver's Code
$n = 5;
 
printMaxNumber($n);
 
// This code is contributed by AnkitRai01
 
?>

Javascript

<script>
 
 
// Function to print maximum number that can be formed
// using N segments
function printMaxNumber(n)
{
    // If n is odd
    if (n & 1) {
        // use 3 three segment to print 7
        document.write( "7");
 
        // remaining to print 1
        for (var i = 0; i < (n - 3) / 2; i++)
            document.write( "1");
    }
 
    // If n is even
    else {
        // print n/2 1s.
        for (var i = 0; i < n / 2; i++)
            document.write( "1");
    }
}
 
// Driver's Code
var n = 5;
printMaxNumber(n);
 
</script>
Producción: 

71

 

Complejidad de tiempo: O(n), ya que se ejecuta un bucle.

Espacio Auxiliar: O(1), ya que no se ha ocupado ningún espacio extra.

Publicación traducida automáticamente

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