美文网首页
求解大数阶乘 【C语言】

求解大数阶乘 【C语言】

作者: 善法 | 来源:发表于2018-10-22 09:45 被阅读0次

    题目

    编写一个算法,计算 2018 的阶乘

    代码

    /* 设计思路:自底向上迭代求值 */
    
    #include <stdio.h>
    #define maxSize 6000
    
    int main()
    {
        int n; // 计算n的阶乘
        // 新建短整型数组a[maxSize+1]:a[0]存放有效数据长度、a[1-maxSize]存放数据
        short a[maxSize+1];
        while(scanf("%d", &n))
        {
            a[0]=1;a[1]=1;
            for (int i=2; i<=n; i++)
            {
                for (int j=1; j<=a[0]; j++)
                    a[j] *= i;
                for (int j=1; j<=a[0]; j++)
                {
                    short carry = a[j]/10;
                    if (j == a[0])
                    {
                        if (carry)
                            a[0]++;
                        a[j+1] = carry;
                    }
                    else
                        a[j+1] += carry;
                    a[j] %= 10;
                }
            }
            for (int i=a[0]; i>=1; i--)
                printf("%hd", a[i]);
            printf("\n");
        }
    }
    

    相关文章

      网友评论

          本文标题:求解大数阶乘 【C语言】

          本文链接:https://www.haomeiwen.com/subject/qghjzftx.html