java - 给定极限内的数字 N 次方

标签 java loops

谁能告诉我哪里出了问题

enter image description here

到目前为止,我尝试了这些,我通过了 3 个测试用例,但在一个案例中失败了,我提供了我遇到的问题的链接 here这是链接,这是 hackerrank 网站中的一个问题,以提高编码技能

public class Solution {

    public static void main(String[] args) {
        int result = 0;
 Scanner z = new Scanner(System.in);
        int n = z.nextInt();
for (int i = 2; i < Math.pow(10,n)-1; i++) {
    int sum = 0;
    int number = i;
    while (number > 0) {
        int d = number % 10;
        number /= 10;

        int temp = d;
        for(int j = 1; j < n; j++){
            temp *= d;
        }
        sum += temp;
    }

    if (sum == i) {
        result += i;
    }
}
        System.out.println(result);
    }
}

最佳答案

您的算法假设可接受的解决方案中的位数小于或等于输入(幂),但这并不总是正确的。如果 n = 5,那么您会错过 194,979 的解,因为 194,979 > 10^5-1 因此,您必须增加正在测试的数字的上限。

我的数学技能让我很失败,因为我不知道确切的上限应该是多少,但这似乎有效(将 Math.pow(10, n) 更改为 Math.Pow(10, n+1)) :

for (int i = 2; i < Math.pow(10,n+1)-1; i++) {

关于java - 给定极限内的数字 N 次方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554340/

相关文章:

java - 理解抽象类和方法并正确重写它们

r - R中的两个相互依赖的for循环,奇怪的结果

PHP - 我可以将这个 if else 变成一个更干净的代码片段,例如数组和循环吗?

C++ 芯片对计算问题

java - xpath 在 HtmlUnitDriver 中不起作用

java - 对 super 的调用必须是构造函数中的第一条语句,但它是

c - 为什么以下 C 代码要求输入两次?

ruby - 为特定类创建父类(super class)数组

java - 检查 url 是否有效时出现错误

java - 简单的 Java 二维数组迷宫示例