求尾数0的个数


/*

*求阶乘的尾数的零的个数:100!的尾数中有多少个0


*/

//分析:尾数0的个数也只跟乘数与被乘数的最后一位数相关,若是改变了数值,则要改变测试末尾0个数的方式

#include<iostream>

#include<cmath>

using namespace std;

int main()

    {
     int h=1,n=99;

     int count=2;//开始从99

     int m=0;
    
     while(n!=1)

         {
           m=h*n;//记录,为了设置在乘积后有0情况下的h值

          h=h*n%10;//保留最后一位尾数

          if(h==0)

              {
               count++;

               h=m/10 %10;//乘积中出现0

               if(m%100==0)//乘积中出现双0,设置h的值

                   {

                   h=m/100;

                   count++;//加另一个0

                   }

        
              }

          n=n-1;

         }
    
     cout<<"the results is:"<<count<<endl;

     cout<<"h="<<h<<endl;
    
    return 0;}



//数学特征分析:若一个数的因子中含有5,则一定会出现0,因此,就转化为求1~100中含有多少个因子5,若是改变了数,则求因子5的方法也要改变

#include<iostream>

using namespace std;

int main()

    {
      int n;

      int count=0;

      for(n=5;n<=100;n+=5)

          {

          count++;

          if(n%25==0)//25的倍数中含有2个因子5,所以要再加一次

              count++;

          }

      cout<<"the result is: "<<count<<endl;
    
    return 0;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值