| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6202 人关注过本帖
标题:计算1!+2!......+100!的值的程序怎么编写
只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用Devon_Ye在2010-1-31 23:25:08的发言:

先贴个阶乘的代码
#include<stdio.h>
#include<string.h>
const int maxn=3000;
int f[maxn];
int main()
{int i,j,n;
    scanf("%d",&n);
    memset(f,0,sizeof(f));
    f[0]=1;
    for(i=2;i<=n;i++ ...




有抄袭的嫌疑。
2010-01-31 23:40
曼珠沙华
Rank: 2
来 自:广东
等 级:论坛游民
帖 子:121
专家分:98
注 册:2009-5-21
收藏
得分:0 
以下是引用Devil_W在2010-1-31 22:12:49的发言:

 
 
 
我还没去看你的什么图书馆里系统。
 
看你这么说,我知道没必要看了。
呵呵。。。对不起了。。。
我已经一个学期没有去碰c语言了。。。
那个什么图书管理,是在这学期期末重新复习了一点,做出来的。。。

我记得好像可以定义long long这个类型的啊。。。
我现在想起数组不能用的。。。晕死。。。

对不起了。。。我的失误。。。

走过了,却留下了痕迹。伤过了,却是一种无奈。人生只不过是一种擦肩而过的过程。
2010-02-01 00:33
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
看来你还没明白什么是大数。

64位的int能放的下我前面贴出来的结果么?

去查limit.h看看。
2010-02-01 00:51
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
以下是引用Devil_W在2010-1-31 23:40:09的发言:

 
 
 
 
有抄袭的嫌疑。
这是是别人贴的例题,参考帖子:高手请进 阶乘的精度值问题
2010-02-01 08:10
think_1987
Rank: 2
等 级:论坛游民
帖 子:20
专家分:21
注 册:2009-7-24
收藏
得分:0 
都是牛人.
2010-02-01 09:41
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
到现在都没有人给个代码,能算到我前面贴的结果。


果然貌似是验证了我的话,90%以上的都写不出。
2010-02-01 09:50
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
以下是引用liuge1129在2010-1-31 21:50:03的发言:

你那结果有个负号是为什么
我这个题目其实搞错了  是1!+2!+......+10!的值  可以帮忙写下吗?
10!和100!可是有天壤之别啊
2010-02-01 10:09
playmyself
Rank: 5Rank: 5
来 自:第3系4级宇宙空间
等 级:职业侠客
帖 子:76
专家分:399
注 册:2009-7-8
收藏
得分:5 
输入N即可算N位阶乘和。
程序代码:
 
#define L5 100000 
#define N 1001 //想算大一些的N位把这里改成N+1,我试了下算到1000!没问题。 
#include<stdio.h> 
 
static num[N][L5]; 
void BigFac(int n); 
 
int main(void) 
{ 
    int tp, n, bt, ap; 
     
    scanf("%d", &n); 
     
    for(tp = n; tp > 0; tp--) 
    BigFac(tp); 
 
    for(ap = 2; ap <= n; ap++) 
    { 
        for(bt = 1; bt-1 <= *num[ap-1]; bt++) 
        { 
            num[ap][bt] += num[ap-1][bt];                     
            tp = num[ap][bt] / L5; 
            num[ap][bt] %= L5; 
            num[ap][bt+1] += tp; 
        } 
    } 
 
    printf("%d", num[n][(*num[n])--]); 
    for(;*num[n]>0;--*num[n]) 
        printf("%05d",num[n][*num[n]]); 
    printf("\n"); 
 
} 
 
void BigFac(int n) 
{ 
    long tpnum; 
    int i, j, add = 0;     
     
    num[n][0] = num[n][1] = 1; 
    for(i = 2; i <= n; i++) 
    { 
        for(j = 1; j <= *num[n]; j++) 
        { 
            tpnum  = num[n][j]*i + add; 
            num[n][j] = tpnum % L5; 
            add    = tpnum / L5; 
        } 
        while(add) 
        { 
            num[n][++(*num[n])] = add % L5; 
            add /= L5; 
        } 
    } 
} 
是我写的,没有考虑效率,硬乘的,VC6 或CFREE4.1 编译通过。

[ 本帖最后由 playmyself 于 2010-2-1 14:39 编辑 ]
收到的鲜花
  • Devil_W2010-02-01 11:29 送鲜花  5朵   附言:Good 效率也可以。就不知道是不是自己写的 ...
  • Devon_Ye2010-02-01 14:38 送鲜花  5朵   附言:我很赞同

无聊创造奇迹。
2010-02-01 10:23
burningbebe
Rank: 2
等 级:论坛游民
帖 子:41
专家分:19
注 册:2009-10-31
收藏
得分:0 
同上楼
收到的鲜花
  • Devil_W2010-02-01 11:30 送鲜花  -2朵   附言:又不是你写的,你同什么同?

世界上最遥远的距离不是生与死,而是网通和电信!
2010-02-01 10:23
chinarodney
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-5-3
收藏
得分:0 
临时写了一个,可行性待验证
double z=1,m=0;
int i=1;
for(;i<=100;i++)
{
    z*=i;
    m+=z;
}
printf(m)........
2010-02-01 12:00
快速回复:计算1!+2!......+100!的值的程序怎么编写
数据加载中...
 
   



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

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