SPOJ上的小因子

时间:2015-06-20 09:47:05

标签: java

我正在尝试将我的代码提交给' Small factorials' 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;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您的运行时错误可能是因为当您已经打开一个Scanner时,尝试在System.in上发起新的Scanner。这似乎在Java 8上失败了,虽然似乎在Java 7上运行正常 - 都在ideone上进行了测试。无需发起新的Scanner nc = new Scanner(System.in);

如果您只是删除该行

tc.nextInt();

并使用nc.nextInt();代替int它应该有效。

我注意到你正在为在线比赛这样做。您还应注意,如果输入为&gt;,您的阶乘将失败(溢出)。 12,因为您正在使用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; } } } 类型。我不知道这是否适用于您的情况。

Bugfixed代码

5
4
3
5
2
1

输入

24
6
120
2
1

输出

Cat,,9
Dog,,10
Egg,,11