【发布时间】:2019-01-31 20:41:31
【问题描述】:
我有两个巨大的自然数保存为字符串:a 和 b。每个数字最多可以有 150 个字符。我需要在合理的时间内得到 ab 的结果。
我搜索了最佳解决方案,但总是 a 是一个大字符串,而 b - int。
我尝试了简单的解决方案:
string power(string n1, string n2) {
string result = n1;
if(n2 == "0")
return "1";
do {
result = multiply(result, n1);
n2 = decrement(n2);
}
while(n2 != "1");
return result;
}
我怎样才能在更短的时间内得到结果?
【问题讨论】:
-
你需要这个做什么?一旦你拥有了这种权力,你计划做的下一件事是什么?我怀疑您实际上可能根本不需要计算全部功率。
-
定义“合理”。还要解释为什么你不能使用现有的“bignum”库。
-
那你就不用计算功率了。模幂是技巧的名称。
-
@LukasKhuka 递减 10^150 你需要十亿年,我确认你需要更快的方法^^
-
请提供minimal reproducible example。目前我们不知道你是如何得到结果的。少了多少时间?