# How to store a very large number of more than 100 digits in C++

Given an integer **N** in form of string **str** consisting of more than 100 digits, the task is to store the value for performing an arithmetic operation and print the given integer.**Examples:**

Input:str = “54326789013892014531903492543267890138920145319034925432678901389201”Output:54326789013892014531903492543267890138920145319034925432678901389201Input:str = “7890138920145319034925432678907890138920145319034925432678901903492543267890”Output:7890138920145319034925432678907890138920145319034925432678901903492543267890

**Approach:**

No data type is present in C++ to store **10 ^{100}**. So, the idea is to use get the input as

**string**(as string can be of any length) and then convert this string into an

**array of digits**of the length same as the length of string. Storing the big integer into an integer array will help to perform some basic arithmetic on that number.

Below are the steps:

- Take the large number as input and store it in a string.
- Create an integer array
**arr[]**of length same as the string size. - Iterate over all characters (digits) of string
**str**one by one and store that digits in the corresponding index of the array**arr**

arr[i] = str[i] – ‘0’;

// Here ‘0’ represents the digit 0, and

// str[i] – ‘0’ = ASCII(str[i]) – ASCII(‘0’) = ASCII(str[i] – 48

- Using the above step, we can store very very large number for doing any arithmetic operations.

Below is the implementation of the above approach:

## 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;` `}` |

**Output:**

12345678098765431234567809876543

**Time Complexity:** *O(K)*, K is the number of digits in the number **Auxiliary Space:** *O(K)*, K is the number of digits in the number