回 帖 发 新 帖 刷新版面

主题:1000!尾0问题

[em18]大哥大姐,请快来帮帮我,
急急……
谢谢!
提示: 1000!=1*2*3*……*1000
问:1000!的末尾有多少个“0”?

回复列表 (共24个回复)

沙发

cin>>n;
num=0;
while(n){
n/=5;
num+=n;
}
cout<<num<<endl;

板凳

提示 5*2 = 10 一个零

3 楼

算了说清楚

因式分解 在乘的过程中处理n!中2和5的数目不用把n!算出来.. 简单吧

4 楼

1 楼应该是这个吧……


cin>>n;
num=0;
while(n>=5){
n/=5;
num+=n;
}
cout<<num<<endl;

5 楼

其实就是求五的因子数。
我的程序,可求n!阶乘结果末尾连续的0的个数(0<n<=1000000):
#include <iostream.h>
main()
{
    long n,i;
    while(cin>>n)
    {
        i=(n-(n%5))/5+(n-(n%25))/25+(n-(n%125))/125+(n-(n%625))/625+
        (n-(n%3125))/3125+(n-(n%15625))/15625+(n-(n%78125))/78125+
        (n-(n%390625))/390625;
        cout<<i<<"\n";
    }
}

6 楼

cin>>n;
num=0;
while(n>=5){
n/=5;
num+=n;
}
cout<<num<<endl;
4楼说得对,就应该这样求了,这是组合数学里面的内容

7 楼

组合数学?这是数论好吧

8 楼

各位大虾请再用pascal编一下吧,小弟这厢有礼了!

9 楼

var
a,b,n,i:longint;
begin
while not seekeof(Input) do
begin
readln(n);
a:=0;
for i:=1 to n do
begin
b:=i;
while (b mod 5 =0) do
begin
b:=b div 5;
a:=a+1;
end;
end;
writeln(a);
end;
end.

10 楼

同意2楼的说法

我来回复

您尚未登录,请登录后再回复。点此登录或注册