检查数字是否是自动的

时间:2014-10-03 12:55:32

标签: c++

我得到两个号码。第一个自然数n和第二个n位数。 n范围是1<=n<=50000。问题是我如何使用例如n * n位数对大数字49000进行操作。我试图在字符串上做,然后我有每个数字的数组,但那么呢?写n * n乘以字符串的函数?我不知道如何开始它。有什么想法吗?

EDIT 我检查号码是automorphic但是如何编辑它以使用数字到50000位数?

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {
    unsigned int n, m = 10, a, b;

    cin >> n;

    b = m;
    while (n > b) {
        b *= m;
    }

    a = (n * n) % b;

    if (a == n)
        cout << "OK";
    else
        cout << "NO";

    return 0;
}

1 个答案:

答案 0 :(得分:0)

他们在C ++中处理大型int的各种方法

  • 使用库,例如​​boost::xintMatt McCutchen bigintInfInt等...
  • 手动执行所需的操作(如果他们需要的操作不多,您可以实施),在这种情况下,您只需乘法模块功能为10并且可以轻松实现),您可以使用例如std::vector<unsigned char>来存储n的数字,并在学校中进行乘法,逐位数字,并报告最后的数字需要的。

注意:您只能通过乘法的一部分来获取所需的最后一位数(通过注意您需要的数量,所需的数字)。对于5000位数,执行所有乘法将快速完成闪电。