我需要帮助解决这个问题。我已经做过了,但是有一个错误,我无法确定是哪一个。
假设你有一个可以分成更小的球的球。这些球的整数大小从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分钟。
这是我第一次尝试。
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);
}
}
}发布于 2015-10-23 00:28:29
我认为在球数超过整数范围的情况下,您的解决方案可能会失败。尝试将long类型用于factor、balls、type。
https://stackoverflow.com/questions/33292808
复制相似问题