Java 这个算法有什么问题?(爪哇)

Java 这个算法有什么问题?(爪哇),java,for-loop,Java,For Loop,我需要帮助解决这个问题。我已经做了,但有一个错误,我无法确定是哪个 假设你有一个球,它可以被分成更小的球。这些球的整数大小从1开始。大小为W>1的球将产生另一个大小为(W)的球−1) 每隔2分钟。例如,一个3号球每9分钟会组装另一个2号球。生产从创建球的那一刻开始。大小为1的球太小,无法创建其他球。此外,作为安全预防措施,尺寸为W的球仅限于装配W个较小的球 输入格式 输入将以表示测试用例数量的整数Z开始。每个案例将由一条包含整数W的单行组成,表示初始球的大小 约束条件 1.≤Z≤1000 1.≤

我需要帮助解决这个问题。我已经做了,但有一个错误,我无法确定是哪个

假设你有一个球,它可以被分成更小的球。这些球的整数大小从1开始。大小为W>1的球将产生另一个大小为(W)的球−1) 每隔2分钟。例如,一个3号球每9分钟会组装另一个2号球。生产从创建球的那一刻开始。大小为1的球太小,无法创建其他球。此外,作为安全预防措施,尺寸为W的球仅限于装配W个较小的球

输入格式

输入将以表示测试用例数量的整数Z开始。每个案例将由一条包含整数W的单行组成,表示初始球的大小

约束条件 1.≤Z≤1000 1.≤W≤二十

输出格式

对于每个测试用例,输出一行,其中包含一对整数X和Y,用一个空格分隔。整数X将指示在允许它们尽可能多地复制后剩余的球总数。整数Y将指示球完成复制所需的分钟数。结果的顺序必须与提供测试用例的顺序相同

样本输入

二,

一,

三,

样本输出

10

1035

解释

在第一种情况下,初始大小为1的球无法复制。最后只有一个球,达到这个数字所需的时间是0分钟。在第二种情况下,原始的3号球产生2号球,然后产生更多的1号球。最初的球需要9分钟来制造一个更小的机器人,然后在第二个球之前再传9分钟,依此类推。每个大小为2的球一创建就开始组装较小的球。复制过程完成后将有10个球,总共需要35分钟

这是我第一次尝试

public class Solution {

    private static Scanner STDIN = new Scanner(System.in);

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int t = STDIN.nextInt();

        for(int k = 0; k<t; k++){

            int n = STDIN.nextInt();
            int factor = 1;
            int balls = 1;
            int time = 0;

            for(int i=n; i>1; i--){
                factor*=i;
                balls+=factor;
                time+=Math.pow(i,3);
            }
            System.out.println(balls+" "+time);
        }
    }
}
公共类解决方案{
专用静态扫描仪STDIN=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int t=STDIN.nextInt();
对于(int k=0;k1;i--){
系数*=i;
球数+=因子;
时间+=数学功率(i,3);
}
System.out.println(balls+“”+时间);
}
}
}

如果球数超过整数范围,我认为您的解决方案可能会失败。尝试使用
long
类型表示
因子
类型
,如果球数超过整数范围,我认为您的解决方案可能会失败。尝试使用
long
类型表示
因子
类型

你能告诉我你的方法得到了什么输出吗?看起来你会得到正确的输出。我在很多情况下都得到了正确的结果,但是我缺少了一些,我不知道是哪个。你能告诉我你的方法得到了什么输出吗?看起来你会得到正确的输出。我在很多情况下都得到了正确的结果,但是有一些我遗漏了,我不知道是哪个。完成!是的!非常感谢。)完成了!是的!谢谢你