心如止水 静思

切题...

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  2 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
				
这个题就是求N!结果中0的个数,需要把N!进行质因数分解。我们只关心其中5的个数 因为5的个数就是0的个数(2^n<5^n)
那么对于N=2000这个例子 至少具有一个5的有2000/5=400个 至少有2个5的有2000/25=80个
3个5 2000/125=16个 4个5 2000/625=3个
故N!的质因数分解中一共有400+80+16+3=499个5 答案即为499


 1#include <cstdio>
 2#include <iostream>
 3
 4using    namespace    std;
 5
 6int    main()
 7{
 8    int n,N;
 9    int ans;
10    
11    scanf("%d",&n);
12
13    while (n--)
14    {
15        scanf("%d",&N);
16        ans=N/5+N/25+N/125+N/625+N/3125+N/15625+N/78125+N/390625
17            +N/1953125+N/9765625+N/48828125+N/244140625;
18        printf("%d\n",ans);
19    }

20    return 0;
21}

22

或者

 1#include <cstdio>
 2#include <iostream>
 3
 4using    namespace    std;
 5
 6int    main()
 7{
 8    int n,N;
 9    int ans;
10    
11    scanf("%d",&n);
12
13    while (n--)
14    {
15        scanf("%d",&N);
16        ans=0;
17        while (N)
18        {
19            N/=5;
20            ans+=N;
21        }

22        printf("%d\n",ans);
23    }

24    return 0;
25}



 






 

posted on 2008-02-15 21:24 zyfans 阅读(319) 评论(0)  编辑 收藏 引用 所属分类: ACM/ICPC

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理