【问题标题】:Given an integer, w, find n and k such that n^k = w [closed]给定一个整数 w,找到 n 和 k 使得 n^k = w [关闭]
【发布时间】:2018-02-20 01:15:51
【问题描述】:

我正在处理一个 Uva 问题 (#107),我知道我有正确的答案,现在我只需要优化它,这样它就不会超时。我相信这个sn-p是罪魁祸首。我需要找到 n 和 k 使得 n^k = 工作。我尝试制作自己的幂函数来加快速度,但这并没有帮助。有哪些方法可以快速计算等于给定值的基数和指数?

N = 2;
for(int i = 1; i < range; i++){
    result = pow(N, i);

    if(result > working){
        i = 1;
        N++;
    }

    if(result == working){
        k = i;
        break;
    }
}

【问题讨论】:

  • 你可以先检查一下working % i == 0..
  • 听起来你的算法有问题。
  • n=w, k=1 怎么样?
  • 你可以edit你的问题更清楚

标签: algorithm math exponential exponent


【解决方案1】:

您可以尝试 k >= 2 并将N 限制为sqrt(w),在循环中以2 开头i。如果没有找到解,则 k = 1, n = w。你也不需要pow,你可以在每次迭代中将中间产品乘以N

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 2013-12-07
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多