标题:求1!+2!+3!+......+20!
只看楼主
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
我说的是12楼,不是11楼。11楼的结果应该是错的。

重剑无锋,大巧不工
2011-10-25 20:59
不在状态
Rank: 1
来 自:河北
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-10-19
得分:0 
回复 21楼 beyondyf
没错啊,我运行了

努力不断持续。奇迹就会发生!
2011-10-25 21:05
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:0 
程序代码:
#include<stdio.h>
void fun(int n);
int a[1000000]={0};
int s[1000000]={0};
int LengTh=0;
int length=0;//size of array s[]
int L=0;
int main()
{
    int i,n;
//    while(scanf("%d",&n)!=EOF)
    for(n=1;n<=20;n++)
    {
        fun(n);
//        if(length<L)
//        {
            length=L;
//        }
//for(i=LengTh;i>=0;i--)
        for(i=0;i<=LengTh;i++)
        {
        /*    s[i]+=a[i];
            if(s[i]+a[i]>9)
            {
                s[i+1]+=1;
                s[i]-=10;
                if(i+1>LengTh)
                {
                    length=LengTh+1;
                }
                //    if
            }*/
            //    printf("%d",a[i]);
            if(s[i]+a[i]>9)
            {
                s[i]=s[i]+a[i]-10;
                s[i+1]+=1;
                if(i==LengTh)
                {
                    length++;
                }
            }
            else
            {
                s[i]=s[i]+a[i];
            }
        }
        for(i=LengTh;i>=0;i--)
            printf("%d",a[i]);
        printf("\n");
        printf("\n");
    }
    for(i=length;i>=0;i--)
        printf("%d",s[i]);
    printf("\n");
    return 0;
}
void fun(int n)
{
    int i,c,m;
    LengTh=0;
    if(n==1)
    {
        a[0]=1;
        LengTh=0;
        return;
    }
    if(n>=2)
    {
        fun(n-1);
        c=0;
        for(i=0;i<=LengTh;i++)
        {
            m=a[i]*n;
            a[i]=(m+c)%10;
            c=(m+c)/10;
        }
        while(c)
        {
            a[i]=c%10;
            i++;
            LengTh++;
            if(LengTh>L)
            {
                L=LengTh;
            }
            c=c/10;
        }
    }
}
2011-10-25 21:06
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
回复 22楼 不在状态
我也运行了,不对,最后两位数字。

重剑无锋,大巧不工
2011-10-25 21:08
你不是一个人
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-10-25
得分:0 
我也要,请大虾发到我邮箱15175030339@
2011-10-25 22:38
不在状态
Rank: 1
来 自:河北
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-10-19
得分:0 
回复 23楼 laznrbfe
貌似您这个好复杂哦

努力不断持续。奇迹就会发生!
2011-10-26 18:36
不在状态
Rank: 1
来 自:河北
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-10-19
得分:0 
回复 24楼 beyondyf
我又运行了一次,11楼好像不对劲,12楼不太适合我现在所学的,long long???没用过

努力不断持续。奇迹就会发生!
2011-10-26 18:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-353412-1-1.html




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

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