已经很久没有打开过我的电脑的devC++了,而且可能有将近两年没有写过c++了,好怀念呀~
正好遇到一道题,看到了熟悉的C++代码,就来写一篇吧~
50!的末尾有多少个0?
扩展:N!的末尾有多少个0?
多数相乘末尾的0的个数 = 乘法中能够生成的10的个数
-> 10 = 2*5
-> 乘数里<2,5>的组合数
-> 连续的自然数中,2的倍数个数远大于5的倍数个数
-> 只需要求连续的N个数中能够生成5的数的个数
50!的末尾有多少个0?
-> 1-50中能够生成5的数的个数:
1.首先,每5个数都能获得某个数是5的倍数,即有:5,10,15,20,25,30,35,40,45,50.
个数为:50/5
2. 其次,有一些数能够因式分解成2个5(在第一步算过一个5了):即25,50。
个数为: 50/5*5
4. 由于50以内的数不能因式分解成>=3个5,所以结束,结果为1和2步结果之和。
即结果为10+2=12.
#include
using namespace std;
int main()
{
int n;
cin>>n;
int res=0;
while(1)
{
if(n<5)
{
break;
}
res+=n/5;
n=n/5;
}
cout<<res;
return 0;
}
刚刚写代码的时候发现我之前某个时候因为电脑c盘内存不够把devC++卸载了,然后在在线编译器中写代码的时候,我真的真的好怀念啊,是熟悉的感觉,是DNA里的记忆吖~
要做一个永远都有情怀的程序员.