| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1924 人关注过本帖
标题:求一算法,谢了!
取消只看楼主 加入收藏
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
 问题点数:0 回复次数:8 
求一算法,谢了!
输入一个整数,求其阶乘的最后一个非零数。从结果的最后一位开始数的非零数。

比如输入6,他的阶乘是720,那么结果就是2,

在如输入4,他的阶乘是24,结果是4。

谢了
搜索更多相关主题的帖子: 算法 
2006-04-08 14:24
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
你们的做法好像错了,我验证过了!

版主能否给个答案呀,

谢了!
2006-04-09 12:29
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
^_^

我已经知道答案了,谢谢大家帮忙。

不过如果输入1000000000,怎么办,大家的方法都不行,耗时间!
2006-04-09 22:48
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
用这样的方法计算的时间太久了,得3秒以上,

我的意思是用一个算法,在0.1秒以内就可以解决。

要是象楼上那样的代码,大家都会写,就没什么意思了呀

大家再想象呀!

^_^
2006-04-12 16:13
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
#include <cstdio>
int main()
{
int N,m2,m5,b,k,i;
while(scanf("%d",&N)==1)
{
if(N==1||N==0)
{
printf("%5d -> %d\n",N,1);
continue;
}
m2=0;
m5=0;
b=1;
for(i=1;i<=N;++i)
{
k=i;
while(k%2==0)
{
m2++;
k/=2;
}
while(k%5==0)
{
m5++;
k/=5;
}
b=(b*k)%10;
}
m2-=m5;
switch(m2%4)
{
case 0:
b=(b*6)%10;
break;
case 1:
b=(b*2)%10;
break;
case 2:
b=(b*4)%10;
break;
default:
b=(b*8)%10;
}
printf("%5d -> %d\n",N,b);
}
return 0;
}
哈哈哈

还是我给出最帅的算法吧!
2006-04-22 14:14
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
由于尾数0是2×5产生的

所以统计一下2的个数

统计一下5的个数

2的个数一定比5的个数多,

然后在分剩余2的个数是0,1,。。。个

然后计算。。。。。。。。。。。。。。。
2006-04-23 16:03
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 

^_^

这个代码不是我想的!

不过真的很帅!

我认为!

2006-04-24 10:43
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 

^_^

你们写的算法都没考虑效率呀!

2006-04-24 23:29
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
^_^
与我的想法一样牙!
同路人!
2006-05-01 21:36
快速回复:求一算法,谢了!
数据加载中...
 
   



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

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