| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1429 人关注过本帖
标题:一个oj的题,求指教
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏
已结贴  问题点数:20 回复次数:11 
一个oj的题,求指教
阶乘的0
时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
计算n!的十进制表示最后有多少个0
输入
第一行输入一个整数N表示测试数据的组数(1<=N<=100)
每组测试数据占一行,都只有一个整数M(0<=M<=10000000)
输出
输出M的阶乘的十进制表示中最后0的个数
比如5!=120则最后的0的个数为1
样例输入
6
3
60
100
1024
23456
8735373
样例输出
0
14
24
253
5861
2183837

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int m;
        cin>>m;
        int sum=0;
        long long temp=1;
        for(int i=1;i<=m;i++)
        {
            temp*=i;
        //    cout<<temp<<endl;
            if(temp%10==0)
            {
                temp/=10;
                sum++;
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}
我用的是边算阶乘边判断末尾有没有零,感觉思路没错,但是结果不对。。。
搜索更多相关主题的帖子: 表示 输入 输出 int temp 
2018-03-13 22:31
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
long long型应该容不下你那么大的测试数据吧
2018-03-13 22:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    unsigned n;
    cin >> n;

    while( n-- )
    {
        unsigned m;
        cin >> m;

        unsigned count = 0;
        for( ; m!=0; m/=5 )
            count += m/5;
        cout << count << '\n';
    }
}
2018-03-14 08:32
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 3楼 rjsp
为什么这么写呢?
2018-03-14 12:36
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:5 
回复 4楼 花脸
这是个求因子的问题。实际就是招出1-n中一个有多少个5。
5,15,20这算是1个5。
25,50,75,100,算是2个5.
125,250算是3个5。
他的意思是先求5的倍数+25的倍数+125的倍数
25和125都在5的倍数里,所以都是上一层+1就行

[此贴子已经被作者于2018-3-14 15:08编辑过]

2018-03-14 15:03
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 5楼 李晨经纪人
好的谢谢,
2018-03-14 23:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
10=2*5 100=2*2*5*5 1000=2*2*2*5*5*5 10000=2*2*2*2*5*5*5*5
严格来说不是算多少个5,而是多少对2*5
但由于在阶乘里面2的因子比5的总是要多,所以看有多少个5就可以了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-15 10:30
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 7楼 九转星河
因子2比因子5多?不应该一样多嘛。。
2018-03-15 13:03
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:0 
回复 8楼 花脸
只说1-5的话2的因子有2和4共3个 5只有1个
2018-03-15 13:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用花脸在2018-3-15 13:03:49的发言:

因子2比因子5多?不应该一样多嘛。。

再严谨一点应该是n>=2的时候~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-15 13:36
快速回复:一个oj的题,求指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027142 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved