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.
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>
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.