| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1924 人关注过本帖
标题:求一算法,谢了!
只看楼主 加入收藏
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
19楼的非常可能溢出

此人已消失
2006-04-12 12:56
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
那就先处理所输入的数字好了,把它的最后一位截下来,然后依旧。。。。。。

此人已消失
2006-04-12 12:57
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
收藏
得分:0 
以下是引用剑人在2006-4-9 22:48:00的发言:
^_^

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

不过如果输入1000000000,怎么办,大家的方法都不行,耗时间!

那就先处理所输入的数字好了,把它的最后一位截下来,然后依旧。。。。。。


此人已消失
2006-04-12 12:57
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
收藏
得分:0 
上楼的的确简单啊!

幽幽黄桷兰----建四狼
2006-04-12 16:04
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
用这样的方法计算的时间太久了,得3秒以上,

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

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

大家再想象呀!

^_^
2006-04-12 16:13
signjing
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-3-24
收藏
得分:0 
定义那数为a 用a%10,若等于0,则a=a/10
再用a%10,若等于0,则a=a/10 直到a%10不等于0,输出a%10的值
一个循环而已

我的QQ:395812618
2006-04-21 19:38
intin
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-3-1
收藏
得分:0 

楼上的程序似乎不妥.


2006-04-21 21:17
errorer
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-4-19
收藏
得分:0 
二楼你好
int calculate(int k)
{
amass*=k;
amass=find_func(amass);
}

for(k=1;k<=num;k++)
calculate(k);
似乎不能求出阶乘吧~~?

思想有多远,就能走多远!
2006-04-21 22:13
zhezhe7
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-9
收藏
得分:0 
感觉14楼的思路挺好的,但程序有点问题,做了点修改如下

以下是引用andyss在2006-4-9 15:29:00的发言:


#include <stdio.h>

long temp;
long calculate(long m){ /*计算最后一个非零的数*/
temp=m%10;
if(temp!=0) return temp;
else{
calculate(m/10); /把原来的calculate(temp)改了,这里用temp就成死循环了/
}
}

main(){
long i,j,m;
j=1;m=1;
printf("please input a number:");
scanf("%ld",&i);
for(m=1;m<=i;m++){
j=j*m;
}
printf("\nthe last no zero number is:%d\n",calculate(j));

}

2006-04-22 11:10
剑人
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
快速回复:求一算法,谢了!
数据加载中...
 
   



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

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