给定数字n,找出n的十进制表示形式末尾的零!
输入:
输入的第一行将包含T =测试用例数。接下来的T行将分别具有一个数字n,其中1 <= n <= 10 ^ 9。找出此数字n的阶乘零(末尾为零)的数量。
输出:
每个测试用例应有一行,以给定数量的阶乘打印尾随零的数量。
样本输入
4
6
12
18
25
样本输出
1
2
3
6
我的输出
2
6
1
... //这表示输入输入的条件没有终止,没有输出。
我的方法:
为了计算尾随零,我检查了5的数目,因为如果5肯定存在2,那么最后将为零。因此,我编写了以下代码,也没有检查数字是否小于或等于4。
下面是我的代码:
public static void zerosCount()
{
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
for(int i=0;i<T;i++)
{
int count5=0;
int p=sc.nextInt();
while(p>=1)
{
int n=p;
while(n>=5)
{
if(n%5==0)
{
count5++;
n=n/5;
}
}
p--;
}
System.out.println(count5);
}
sc.close();
}
为什么我无法获得正确的输出:
谁能指导我为什么?
@radoh提到的方法是不完整的,将导致错误的答案,如100之类的数字,其中有24个零,但n / 5只能得到20。
零的数量取决于5s。因此,如果
N = 5然后除以5,得到1
N = 10,然后除以5得到2
N = 25,然后除以5和25
N = 50,然后除以5和25,得出12
N = 100,然后将其除以5 25将给您24,
因此,底线是每次除法后,将5与5相乘,如果相乘的结果小于等于N,则将N与结果相除,并将零相加计数器变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句