Dado un entero N en forma de string str que consta de más de 100 dígitos, la tarea es almacenar el valor para realizar una operación aritmética e imprimir el entero dado.
Ejemplos:
Input: str = “54326789013892014531903492543267890138920145319034925432678901389201”
Output: 54326789013892014531903492543267890138920145319034925432678901389201
Input: str = “7890138920145319034925432678907890138920145319034925432678901903492543267890”
Output: 7890138920145319034925432678907890138920145319034925432678901903492543267890
Enfoque:
No hay ningún tipo de datos presente en C++ para almacenar 10 100 . Entonces, la idea es obtener la entrada como string (ya que la string puede tener cualquier longitud) y luego convertir esta string en una array de dígitos de la misma longitud que la string. Almacenar el entero grande en una array de enteros ayudará a realizar algunas operaciones aritméticas básicas con ese número.
A continuación se muestran los pasos:
- Tome el número grande como entrada y guárdelo en una string.
- Cree una array de enteros arr[] de longitud igual al tamaño de la string.
- Iterar sobre todos los caracteres (dígitos) de la string str uno por uno y almacenar esos dígitos en el índice correspondiente de la array arr
array[i] = string[i] – ‘0’;
// Aquí ‘0’ representa el dígito 0, y
// str[i] – ‘0’ = ASCII(str[i]) – ASCII(‘0’) = ASCII(str[i] – 48
- Usando el paso anterior, podemos almacenar un número muy grande para realizar cualquier operación aritmética.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <iostream> using namespace std; // Function to return dynamic allocated // array consisting integers individually int* GetBigInteger(string str) { int x = str.size(), a = 0; // Create an array to store the big // integer into it. // Make the array size same as the // size of string str int* arr = new int[str.size()]; // Loop to extract string elements // into the array one by one while (a != x) { // Subtracting '0' to convert // each character into digit // str[a] - '0' // = ASCII(str[a]) - ASCII('0') // = ASCII(str[a] - 48 arr[a] = str[a] - '0'; a++; } // Return the reference of the array return arr; } // Driver Code int main() { // Big Integer in form of string str string str = "12345678098765431234567809876543"; // Function Call int* arr = GetBigInteger(str); // Print the digits in the arr[] for (int i = 0; i < str.size(); i++) { cout << arr[i]; } return 0; }
12345678098765431234567809876543
Complejidad de tiempo: O(K) , K es el número de dígitos en el número
Espacio auxiliar: O(K) , K es el número de dígitos en el número
Publicación traducida automáticamente
Artículo escrito por satyajitmahunta98 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA