当前位置: 首页 > 知识库问答 >
问题:

c中阶乘的尾随零数

简嘉赐
2023-03-14

我是C编程新手,我想找出给定数的阶乘中尾随零的数量

{
        long int n=0,facto=1,ln=0;
        int zcount=0,i=1;
        printf("Enter a number:");
        scanf("%ld",&n);
        if(n==0)
        {
          facto=1;
        }
        else
        {
           for(i=1;i<=n;i++)
           {
              facto=facto*i;
           }
        }
        printf("%ld",facto);
        while(facto>0)
        {
           ln=facto%10;
           facto/10;
           if(ln=!0)
           { 
               break;
           }
           else
           { 
               zcount+=1;
           }
        }
        printf("Tere are Total %d Trailing zeros in given factorial",zcount);
}

我尝试计算数字的模,它将返回给定数字的最后一位作为余数,然后n/10;将删除最后一个数字。

执行程序后,输出总是将尾随零的数量显示为“0”,如果(ln=!0)条件始终得到满足,即使存在零。

共有3个答案

袁谭三
2023-03-14

中的正确语法

if(ln!=0) 
{ 
    // do something     
}

if(ln=!0)中,首先评估!0,然后=!0(即1)分配给ln,然后if检查ln的值,如果值为非零(在这种情况下,由于之前的赋值,它是1),则执行中断语句。

此外,这种方法不适用于大于25的数字。很明显,在n 将是答案。

下面的表达式给出了素数p在n中的幂 :-<代码>f(n/p)f(n/p^2)f(n/p^3)。。。。。(直到f(n/p^k)返回零,其中f(a)返回a的最大整数或a的下限

路阳华
2023-03-14

if(ln=!0)

表示ln=!0即您将!0分配给ln因此条件始终为真,将其更改为

if (ln != 0)

您可以使用赋值作为真值,但前提是您确定正在这样做。

为防止意外执行此操作,请打开编译器警告。

伊俊能
2023-03-14

让我们记住数学(wiki):

int trailingZeroCountInFactorial(int n)
{
  int result = 0;
  for (int i = 5; i <= n; i *= 5)
  {
    result += n / i;
    if(i > INT_MAX / 5) // prevent integer overflow
      break;
  }
  return result;
}
 类似资料:
  • 问题内容: 我正在尝试计算阶乘产生的数字的尾随零(这意味着数字变得很大)。以下代码采用一个数字,计算该数字的阶乘,并计算尾随零。但是,当数字大约为25!时,numZeros将不起作用。 我并不担心这段代码的效率,并且我知道有多种方法可以使这段代码的效率更好。我要弄清楚的是为什么计数大于25的数字结尾的零!不管用。 有任何想法吗? 问题答案: 您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案

  • 我试图计算给定数字的阶乘中尾随零的数量,例如。, ,其中尾随零 ,其中尾随零 我的问题是,我有一个像df这样的数据帧 我知道R中的阶乘是用来计算阶乘的,但我不知道如何计算尾部的零。任何帮助都将不胜感激!

  • 我试图计算阶乘中尾随零的数量。 我认为尾随零的数量不正确。 使用计数(30)时,30中有7个尾随的0。然而,它正在返回6。

  • 当我提交给leetcode时,它运行案例500/502,但失败了,原因是:1808548329。但当我在自己的mac上运行它时,它给出了与公认的答案相同的答案。 我的代码: 交流答案是: 它们在我的mac上运行相同的结果: 第一个解决方案之所以不被接受,是因为时间复杂度 (因为我在自己的mac上运行它,但它给出了与ac相同的答案) 如何计算第一个解决方案的时间复杂度, 它是O(NlogN)吗?我不

  • 尝试计算给定数字的阶乘中尾随零的数量有点困难。这是Codewars-无法让我的通过的挑战之一。 我想我在这里走错了路,可能还有更优雅的红宝石路。这是我迄今为止所做的。

  • 我试图解决代码战问题,称为:N的尾随零的数量!和哈斯克尔。我知道我不需要计算阶乘来知道尾随零,事实上我只是计算有多少个数字可以被5整除,以及每个数字可以被5整除多少次。我写了两个版本,一个版本在对一个数字进行去噪时使用回忆录,以得到可以被5整除的次数,另一个版本不使用回忆录。令我惊讶的是,假设的DP方法比普通的递归方法耗时更长。我可能在代码中做了一些非常愚蠢的事情。 以下是功能: 我试图记下的是默