我得到两个号码。第一个自然数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;
}
答案 0 :(得分:0)
他们在C ++中处理大型int的各种方法
boost::xint
,Matt McCutchen bigint,InfInt等... std::vector<unsigned char>
来存储n
的数字,并在学校中进行乘法,逐位数字,并报告最后的数字需要的。注意:您只能通过乘法的一部分来获取所需的最后一位数(通过注意您需要的数量,所需的数字)。对于5000位数,执行所有乘法将快速完成闪电。