Dada una string numérica S de tamaño N , la tarea es encontrar el número formado al sumar los números 1 , 2 , 3 , … hasta el infinito a cada dígito alternativo de la string numérica dada S (comenzando desde la última posición). En cualquier momento, si el resultado de la suma no es un solo dígito, realice la suma repetida de dígitos hasta que el resultado sea un solo dígito .
Ejemplos:
Entrada: S = “1345”
Salida: 1546
Explicación:
Agregar 1 al último dígito, es decir, 5 se convertirá en 6, lo que modifica la string a “1346”.
Agregar 2 al penúltimo dígito, es decir, 3 se convertirá en 5, lo que modifica la string a «1546».
Después de los pasos anteriores, la string resultante formada es «1546».Entrada: S = “789”
Salida: 981
Planteamiento: La idea para resolver este problema radica en la parte de la suma repetida. En realidad, no hay necesidad de realizar la suma repetidamente hasta que haya un dígito. En su lugar, ejecute el número % 9 . Si el número % 9 es igual a 9 , entonces la suma de los dígitos será igual a 9, de lo contrario la suma de los dígitos será igual al número % 9 . Siga los pasos a continuación para resolver el problema:
- Inicialice las variables temp y added_number como 0 para almacenar la posición que se modificará y el número que se agregará.
- Inicialice el resultado de la variable de string como una string vacía para almacenar el resultado.
- Itere sobre el rango [len-1, 0] donde len es la longitud de la string, usando la variable i y realice los siguientes pasos:
- Inicialice el dígito variable como el dígito en la posición actual en la string.
- Si temp%2 es igual a 0 , aumente el valor de added_number en 1 y agréguelo al dígito variable .
- Si el dígito mayor que es igual a 10 , establezca el valor del dígito como dígito% 9 y, si aún así, el dígito es igual a 0 , establezca su valor como 9.
- Agregue el dígito variable al resultado variable al principio.
- Después de realizar los pasos anteriores, imprima el valor del resultado como respuesta.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to generate the resultant // number using the given criteria string generateNumber(string number) { int temp = 0, adding_number = 0; // Storing end result string result = ""; // Find the length of numeric string int len = number.size(); // Traverse the string for (int i = len - 1; i >= 0; i--) { // Storing digit at ith position int digit = number[i] - '0'; // Checking that the number would // be added or not if (temp % 2 == 0) { adding_number += 1; digit += adding_number; // Logic for summing the digits // if the digit is greater than 10 if (digit >= 10) { digit %= 9; if (digit == 0) digit = 9; } } // Storing the result result = to_string(digit) + result; temp += 1; } // Returning the result return result; } // Driver Code int main() { string S = "1345"; cout << generateNumber(S); return 0; }
Java
// Java program for the above approach class GFG { // Function to generate the resultant // number using the given criteria public static String generateNumber(String number) { int temp = 0, adding_number = 0; // Storing end result String result = ""; // Find the length of numeric string int len = number.length(); // Traverse the string for (int i = len - 1; i >= 0; i--) { // Storing digit at ith position int digit = (int) number.charAt(i) - (int) '0'; // Checking that the number would // be added or not if (temp % 2 == 0) { adding_number += 1; digit += adding_number; // Logic for summing the digits // if the digit is greater than 10 if (digit >= 10) { digit %= 9; if (digit == 0) digit = 9; } } // Storing the result result = digit + result; temp += 1; } // Returning the result return result; } // Driver Code public static void main(String args[]) { String S = "1345"; System.out.println(generateNumber(S)); } } // This code is contributed by gfgking.
Python3
# Python3 program for the above approach # Function to generate the resultant # number using the given criteria def generateNumber(number) : temp = 0; adding_number = 0; # Storing end result result = ""; # Find the length of numeric string l = len(number); # Traverse the string for i in range(l - 1, -1, -1) : # Storing digit at ith position digit = ord(number[i]) - ord('0'); # Checking that the number would # be added or not if (temp % 2 == 0) : adding_number += 1; digit += adding_number; # Logic for summing the digits # if the digit is greater than 10 if (digit >= 10) : digit %= 9; if (digit == 0) : digit = 9; # Storing the result result = str(digit) + result; temp += 1; # Returning the result return result; # Driver Code if __name__ == "__main__" : S = "1345"; print(generateNumber(S)); # This code is contributed by AnkThon
Javascript
<script> // JavaScript Program to implement // the above approach // Function to generate the resultant // number using the given criteria function generateNumber(number) { let temp = 0, adding_number = 0; // Storing end result let result = ""; // Find the length of numeric string let len = number.length; // Traverse the string for (let i = len - 1; i >= 0; i--) { // Storing digit at ith position let digit = parseInt(number[i]); // Checking that the number would // be added or not if (temp % 2 == 0) { adding_number += 1; digit += adding_number; // Logic for summing the digits // if the digit is greater than 10 if (digit >= 10) { digit %= 9; if (digit == 0) digit = 9; } } // Storing the result result = (digit).toString() + result; temp += 1; } // Returning the result return result; } // Driver Code let S = "1345"; document.write(generateNumber(S)); // This code is contributed by Potta Lokesh </script>
C#
// C# program for the above approach using System; public class GFG { // Function to generate the resultant // number using the given criteria public static String generateNumber(string number) { int temp = 0, adding_number = 0; // Storing end result string result = ""; // Find the length of numeric string int len = number.Length; // Traverse the string for (int i = len - 1; i >= 0; i--) { // Storing digit at ith position int digit = (int)number[i] - (int)'0'; // Checking that the number would // be added or not if (temp % 2 == 0) { adding_number += 1; digit += adding_number; // Logic for summing the digits // if the digit is greater than 10 if (digit >= 10) { digit %= 9; if (digit == 0) digit = 9; } } // Storing the result result = digit + result; temp += 1; } // Returning the result return result; } // Driver Code public static void Main(string []args) { string S = "1345"; Console.WriteLine(generateNumber(S)); } } // This code is contributed by AnkThon
1546
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por vandanakillari54935 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA