| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12744 人关注过本帖
标题:PK赛第一期[N!连加][级别:中级](考虑期末考试,延期至7月21日结束)
取消只看楼主 加入收藏
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 

当N=10000时由于帖子字数限制就不贴上来了。


VB QQ群:47715789
2007-06-19 20:13
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
N=1000时大概需要用0.41秒。
N=10000时大约要用1分钟左右。

计算公式:1! + 2! + 3! + 4! + 5! +...+ 10000!
开始时间:21:33:06
结束时间:21:34:03
总计耗时:56.45
计算结果:…………


把我自己做的一个示例传上来,大家可以试试。也帮我测试测试有没有BUG。由于当N>10000时耗时较长,所以限定了N最大为10000,实际N最大能取多大的数我自己也没有测试过。

[attach]23312[/attach]


最后,希望大家都能踊跃参加,就算不能做出来,但我相信只要自己去试,就会发现得到的肯定会比付出的多。


[此贴子已经被作者于2007-6-30 13:32:11编辑过]



XDpS8Av8.rar (8.95 KB)

VB QQ群:47715789
2007-06-19 21:16
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
回复:(xz3501)回复:(Joforn)PK赛第一期[N!连加...
注意:1、上传参赛作品时只要发EXE文档跟帖即可,源码请发送至1楼的Email地址就行了;
   2、所以参赛作品请自行检查BUG;
  
楼上的代码以经看过,不过还有几处BUG待修改:
1、输出方式不符合要求;
2、N>170时肯定会出现溢出错误。

不过精神可表,我相信,稍加努力,就会成功的
加油!!!! 

[此贴子已经被作者于2007-6-24 8:51:53编辑过]


VB QQ群:47715789
2007-06-21 21:31
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
以下是引用Benison在2007-6-23 23:29:28的发言:

如何解决 当 n>170 时的溢出,以及如何把结果变为连串的数字;还有上面第二个问题是什么意思?

Private Sub Form_click()
n = InputBox("input n")
s = 1
x = 1
If n - 1 > 0 Then
For i = 1 To n - 1
s = (i + 1) * s
x = x + s
Next i
End If
Print x
End Sub

如何解决N>170时的溢出,这正是各位要考虑的问题。


VB QQ群:47715789
2007-06-24 08:49
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
以下是引用随风逐流在2007-6-26 10:49:00的发言:

斑竹,你的程序精确度太差了。虽然速度很快。但是你的程序算到21!就开始错了,不信你看看。
正确的1! + 2! + 3! + 4! + 5! +...+ 20!=2,561,327,494,111,820,313
而21!=51,090,942,171,709,400,000
你的程序算1! + 2! + 3! + 4! + 5! +...+ 21!=53,652,269,665,821,260,313 多出了40000。
在21的时候就有这么大的误差。那到后面误差不是更大?
我说怎么跟我程序算出来的总是不一样。

你用双精度变量做的答案来验证我的程序?
给楼上的一个小提示:6!=720;5!=120;4!=24;3!=6;2!=2;1!=1;
那么也就是说从5!开始所有数的接一乘值的个位肯定为零(至于为什么不用我说吧?),那么N!连加的个位数肯定为3
那么为什么你的会出现个位为0呢?我估计你使用的是双精度变量,而且你还非常的不了解双精度变量的特性。

建议你试试把任意一个接近双精度变量最大值1.79769313486232E308放入一个双精度变量A中,再用MsgBox Format(A, "###,###")试试,这样你就可以很明显的看出到底为什么双精度变量只用了8个字节却能表示比18446744073709551615(十六进制&HFFFFFFFFFFFFFFFF)更大的值了。


VB QQ群:47715789
2007-06-26 11:48
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
以下是引用缘子弹在2007-6-26 13:28:06的发言:

支持Joforn的分析!~
同样支持敢于对向前辈发出挑战和怀疑的所有greed hand.!~


对了,Joforn你是不是用上述规律提高计算效率的?



我只是设计了一个粗糙算法,其精确度为1


VB QQ群:47715789
2007-06-26 21:58
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
只能计算整数。

VB QQ群:47715789
2007-06-27 15:12
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
请xlin1033把编译好的可执行文件在此帖后跟帖发上来。

VB QQ群:47715789
2007-06-27 19:07
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
很高兴已经有两位参赛者做出正确解了。

VB QQ群:47715789
2007-06-29 18:01
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
声明:
考虑到最近要期末考试,故当前期PK赛延期至7月21日结帖。
在此也祝各位学子们考试顺利通过!

本人已有五、六年没有考过试了,连期考时间都记不清了,是不是一般都在六月底?

VB QQ群:47715789
2007-06-30 17:51
快速回复:PK赛第一期[N!连加][级别:中级](考虑期末考试,延期至7月21日结束)
数据加载中...
 
   



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

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