在 C++ 中递增大数字(近 100.000 位)

Siv*_*K R 4 c++

如何在 C++ 中存储大量近 100000 位数字?...

我试过使用long long int并且long double int..对我没有任何作用..

有没有其他方法可以存储这么大的数字?

我希望找到比给定的巨大数字更大的最小回文数。

nur*_*tin 6

在评论部分进一步澄清后:

是的,您可以将您的数字表示为 C++ 中的 std::string。

在这里您可以找到用于递增表示为字符串的数字的代码:

#include <string>
#include <iostream>
#include <ostream>

void increment_numerical_string(std::string& s)
{
    std::string::reverse_iterator iter = s.rbegin(), end = s.rend();
    int carry = 1;
    while (carry && iter != end)
    {
        int value = (*iter - '0') + carry;
        carry = (value / 10);
        *iter = '0' + (value % 10);
        ++iter;
    }
    if (carry)
        s.insert(0, "1");
}

int main()
{
    std::string big_number = "123456789012345678901234567899";
    std::cout << "before increment: " << big_number << "\n";
    increment_numerical_string(big_number);
    std::cout << "after increment:  " << big_number << "\n";
}
Run Code Online (Sandbox Code Playgroud)

您可以在循环中使用它来增加您的大数字并检查结果字符串是否为回文

if( equal(s.begin(), s.begin() + s.size()/2, s.rbegin()) )
    std::cout << "is a palindrome.\n";
else
    std::cout << "is NOT a palindrome.\n";
Run Code Online (Sandbox Code Playgroud)

编辑

我不认为这是解决问题的有效和正确的解决方案。它只是大数的表示和递增方法。