SPOJ 上的尾随零数错误答案 (JAVA)
Trailing Number of Zeros wrong answer on SPOJ (JAVA)
今天我尝试在 SPOJ (link) 上解决 "Factorial" 问题,它看起来像简单的尾随零数算法,但我一直在 SPOJ "Wrong answer".
算法非常简单,适用于所有测试(来自 SPOJ、其他来源和我手动创建的所有内容),但 "Wrong answer" 在 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 简单的 c/d (因为在 Java 中整数除法用作 floor 函数)和其他一些简单的检查可能出错的地方。
有什么想法吗?谢谢!
真是个小错误。
在 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;
}
今天我尝试在 SPOJ (link) 上解决 "Factorial" 问题,它看起来像简单的尾随零数算法,但我一直在 SPOJ "Wrong answer".
算法非常简单,适用于所有测试(来自 SPOJ、其他来源和我手动创建的所有内容),但 "Wrong answer" 在 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 简单的 c/d (因为在 Java 中整数除法用作 floor 函数)和其他一些简单的检查可能出错的地方。
有什么想法吗?谢谢!
真是个小错误。
在 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;
}