首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个算法有什么问题?(爪哇)

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

Stack Overflow用户
提问于 2015-10-23 00:04:23
回答 1查看 71关注 0票数 1

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

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

输入格式

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

约束1≤Z≤1000 1≤W≤20

输出格式

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

样本输入

2

1

3.

样本输出

1%0

10 35

解释

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

这是我第一次尝试。

代码语言:javascript
复制
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);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 00:28:29

我认为在球数超过整数范围的情况下,您的解决方案可能会失败。尝试将long类型用于factorballstype

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33292808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档