📌  相关文章
📜  如何在C++中存储超过100位的非常大的数字

📅  最后修改于: 2021-09-06 06:23:01             🧑  作者: Mango

给定一个由超过 100 位数字组成的字符串str形式的整数N ,任务是存储执行算术运算的值并打印给定的整数。

例子:

方法:
C++ 中不存在数据类型来存储10 100 。因此,我们的想法是使用 get 输入作为字符串(因为字符串可以是任何长度),然后将此字符串转换为长度与字符串长度相同的数字数组。将大整数存储到整数数组中将有助于对该数字执行一些基本算术。

以下是步骤:

  1. 将大数作为输入并将其存储在字符串。
  2. 创建一个长度与字符串大小相同的整数数组arr[]
  3. 一一迭代字符串str 的所有字符(数字)并将这些数字存储在数组arr的相应索引中
  4. 使用上述步骤,我们可以存储非常非常大的数字以进行任何算术运算。

下面是上述方法的实现:

C++
// C++ program for the above approach
#include 
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

时间复杂度: O(K) ,K 是数字中的位数
辅助空格: O(K) ,K是数字中的位数

想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解语言和 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程