| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1926 人关注过本帖
标题:求一算法,谢了!
只看楼主 加入收藏
kaola4549
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-10
收藏
得分:0 
楼上的好强哦,能给解释一下吗?看不太懂……
2006-04-22 15:17
yjfnpl2005
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-4-10
收藏
得分:0 

main()
{int i,m,s=1,a, b;
scanf("%d",&m);
for(i=1;i<=m;i++)
s+=i;
for(a=1;a<=s;a*=10)
if(s%a!=0)
b=s%a;
printf("%d\n",b);
}
为什么这样子不行啊`````输入6能输出2,但输入其它的数,全不对啦`````

[此贴子已经被作者于2006-4-23 10:49:33编辑过]

2006-04-23 10:49
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 
由于尾数0是2×5产生的

所以统计一下2的个数

统计一下5的个数

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

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

然后计算。。。。。。。。。。。。。。。
2006-04-23 16:03
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

#include <stdio.h>
#include <conio.h>

int main(void)
{
int ia, ib, ic = 1, id;

scanf("%d", &ia);
for (ib = 1; ib <= ia; ib++)
{
ic *= ib;
}

ic %= 100 ;

if (ic >= 10)
{
if (ic % 10 == 0)
{
id = ic /10 ;
}
else
{
id = ic %10;
}
}
else
{
id = ic %10;
}

printf("id = %d\n", id);

getch();
return 0;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-23 16:21
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include <stdio.h>
void main()
{
int m,i,s=1;
scanf("%d",&m);
for(i=1;i<=m;i++)
s=s*i;
while(!(s%10))
{
s=s/10;
}
printf("%d",s%10);
getch();

}
数太大的话速度一定慢那要看看数据结构了,还有就是会溢出,还想不出来 现在只能做简单的

[此贴子已经被作者于2006-4-23 17:16:17编辑过]


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-23 17:12
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

我用计算器算了一下别说1000的阶乘了,就是20的阶乖已经远远的大于了long整形的最大值了
所以不溢出才怪呢
你要是算1000的阶乖还真是个令人头大的事情


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-23 17:32
消除彷徨
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-23
收藏
得分:0 
上楼强,我试过你的程序了,简洁,而且正确!!!佩服!望多指教!!
2006-04-23 18:36
剑人
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-21
收藏
得分:0 

^_^

这个代码不是我想的!

不过真的很帅!

我认为!

2006-04-24 10:43
redstar00
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-4-19
收藏
得分:0 
#include<stdio.h>
void main()
{int i,n;
long j=1;
printf("输入一个正整数 n=");
scanf("%d",&n);
for (i=1;i<=n;i++)
{j*=i;}
while(j>=10)
{ if(j%10==0)
j=j/10;
else if(j>1)
j=j%10;}

printf("%ld",j);
}
2006-04-24 16:05
zhangpeng
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-9
收藏
得分:0 

同上
#include<stdio.h>
main()
{
long int n,i,j=1;
scanf("%ld",&n);
for(i=n;i>1;i--)
j*=i;
while(j%10==0)
{
j/=10;
}
printf("%d",j%10);
return 0;
}


2006-04-24 16:05
快速回复:求一算法,谢了!
数据加载中...
 
   



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

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