gpt4 book ai didi

java - SPOJ 上的小阶乘

转载 作者:行者123 更新时间:2023-11-30 08:11:33 27 4
gpt4 key购买 nike

我正在尝试将我的代码提交给 SPOJ 上的“小阶乘”问题。它在我的 IDE 上成功运行,但在 SPOJ 上显示运行时错误 (NZEC)。请提出解决方案。

import java.util.Scanner;
class Factoria
{
public static void main (String[] args) throws java.lang.Exception
{
int t, n;
int multi = 1;
Scanner tc = new Scanner(System.in);
t = tc.nextInt();
for(int i=0;i<t;i++){
Scanner nc = new Scanner(System.in);
n = nc.nextInt();
for(int f=1;f<=n;f++){
multi = multi * f;
}
System.out.println(multi);
multi = 1;
}
}
}

最佳答案

您的运行时错误可能是因为您尝试在 System.in 上启动一个新的 Scanner,而您已经打开了一个。这似乎在 Java 8 上失败了,尽管在 Java 7 上似乎运行正常——两者都在 ideone 上测试过.无需启动新的 Scanner

如果你简单地删除行

Scanner nc = new Scanner(System.in);

并使用 tc.nextInt(); 而不是 nc.nextInt(); 它应该可以工作。

我注意到您这样做是为了参加在线比赛。您还应该注意,如果输入 > 12,您的阶乘将失败(溢出),因为您使用的是 int 类型。我不知道这是否适用于您的情况。


错误修正代码

import java.util.Scanner;

class Factoria
{
public static void main (String[] args) throws java.lang.Exception
{
int t, n;
int multi = 1;
Scanner tc = new Scanner(System.in);
t = tc.nextInt();
for(int i=0;i<t;i++){
n = tc.nextInt();
for(int f=1;f<=n;f++){
multi = multi * f;
}
System.out.println(multi);
multi = 1;
}
}
}

输入

5
4
3
5
2
1

输出

24
6
120
2
1

关于java - SPOJ 上的小阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com