在SPOJ(JAVA)上落后的零错误答案

时间:2015-12-09 12:21:11

标签: java algorithm factorial

今天我尝试在SPOJ(link)上解决“Factorial”问题,它看起来像是简单的尾随零编号算法,但我一直在SPOJ“错误回答”。

算法非常简单,适用于所有测试(来自SPOJ,其他来源和我手动创建的所有内容),但是在0.99秒后出现“错误回答”...

这是我的代码:

public static int ZeroCount (int num)
{
    int zeros = 0;
    for (int i =5; i < num; i*=5)
        zeros = zeros + (int)Math.floor(num/i);
    return zeros;
}

public static void main(String[] args) throws java.lang.Exception {
    Scanner reader = new Scanner(System.in);
    int size = reader.nextInt();
    while (size > 0) {
        System.out.println(Main.ZeroCount(reader.nextInt()));
        size--;
    }
}

我做了1)long vs int; 2)i * = 5 vs while循环使用Math.pow(a,b)函数; 3)Math.floor(c / d)vs simple c / d(因为在Java中整数除法作为floor函数)和其他一些简单的检查可能出错。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个非常小的错误。

在函数ZeroCount中,将i < num替换为i <= num

public static int ZeroCount (int num)
{
    int zeros = 0;
    for (int i =5; i <= num; i*=5)
        zeros = zeros + (int)Math.floor(num/i);
    return zeros;
}
相关问题