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

我高错帐号了xlin1033xl

6wFpwUlH.rar (6.17 KB) PK赛第一期[N!连加][级别:中级]



-------------程序*酒*人生
2007-06-28 18:59
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 
呵呵,楼上做的不错...
只是从101!之和开始,就开始和Joforn的产生误差了.

[此贴子已经被作者于2007-6-28 22:28:23编辑过]


2007-06-28 19:24
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 
支持 xlin1033xl .
我和你算的结果一样,不过,我比你的速度慢!

2007-06-28 22:33
缘子弹
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2007-4-5
收藏
得分:0 

小弟瞎编了个,时间仓促,未加豆号分隔处理:

wbXHl07k.rar (6.79 KB)


哎...运算速度确实有待提高!
没办法啦,过几天就要考试了,看来我是无缘这次PK赛了.



[此贴子已经被作者于2007-6-29 14:58:54编辑过]



Y5vi3FAw.rar (6.73 KB) PK赛第一期[N!连加][级别:中级]



1axo049Z.rar (6.8 KB)


fKWGVp9g.rar (6.81 KB)


h5lw1Xxd.rar (6.77 KB)


wJmOMii0.rar (13.3 KB)


wZkXphVG.rar (6.79 KB)

2007-06-28 23:54
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 

我昨天晚上處理數據溢出方面還是沒有成功,再找一下資料看看


你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-06-29 10:00
xlin1033xl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:160
专家分:129
注 册:2007-6-24
收藏
得分:0 

关于数据溢出,个人觉得可以尝试用字符型


-------------程序*酒*人生
2007-06-29 12:06
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 

数组模拟


#include <iostream.h>
#include <conio.h>
#include <malloc.h>
const int N = 1000;

void next(int a[],int n)
{
if(n==1 || n==0)
{
a[0] = 1;
a[1] = 1;
return;
}
int k = a[0];
int *b = (int *)malloc(sizeof(int) * (k+1));
int temp = 0;
int c = 0;
for(int i=1;i<=k;i++)
{
b = a;
}
for(i=1;i<n;i++)
{
temp = 0;
c = 0;
for(int j=1;j<=k;j++)
{
temp = (j<=a[0]?a[j]+b[j]:a[j]) + c;
c = temp / 10;
a[j] = temp % 10;
}
if(c>0)
{
a[++k] = c;
}
}
free(b);
a[0] = k;
}

void write(int *a, int k)
{
cout << k << \"! = \";
for(int i=a[0];i>0;i--)
{
cout << a;
}
cout << endl;
}

int main()
{
//clrscr();
int a[N];
int n;
cout << \"Enter the number n:\";
cin >> n;
if(n<0)
{
cout << \"Error!\" << endl;
return -1;
}
for(int k=0; k<=n; k++)
{
next(a,k);
}
write(a,n);
return 0;
}


Viva,espana!
2007-06-29 12:09
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
很高兴已经有两位参赛者做出正确解了。

VB QQ群:47715789
2007-06-29 18:01
xlin1033xl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:160
专家分:129
注 册:2007-6-24
收藏
得分:0 

给大家提供个思路:在计算N!的阶乘时,Sn-1(前n-1项的和),已经计算出来了,且(N-1)!也计算出来了
那Sn=Sn-1+(N-1)!*N,这个公式可以一步完成,从而减少计算N!后,再去计算Sn-1+N!的时间,可以明显提高速度


-------------程序*酒*人生
2007-06-29 18:53
xlin1033xl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:160
专家分:129
注 册:2007-6-24
收藏
得分:0 
至于数据溢出的问题,可以考虑从每一位数字入手,这样intger型就足以应付了

-------------程序*酒*人生
2007-06-29 18:57
快速回复:PK赛第一期[N!连加][级别:中级](考虑期末考试,延期至7月21日结束)
数据加载中...
 
   



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

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