• C语言 实现N阶乘


    #include <stdio.h>
    #include <stdlib.h>

    #define N 10 //
    N的阶乘


    int main()
    {       //
    数组   1 1!
        int ary[N] = {1, 1};
        int i, j;

        for (i = 2; i <= N; i++)
        {
            //
    各个下标的阶乘,第0位下标是位数,所以从第1位开始
            for (j = 1; j <= ary[0]; j++)
            {
                ary[j] = ary[j] * i;
            }

            //
    处理进位问题 1W就进一位
            for (j = 1; j <= ary[0]; j++)
            {
                if (ary[j] >= 10000)
                {
                    //
    进位
                    ary[j+1] = ary[j+1] + ary[j] / 10000; 
                    //
    进位后就只留下余数
                    ary[j] = ary[j] % 10000;
                }
            }

            //
    有进位的话,位数就+1
            //
    这里j已经是位数大于1
            if (ary[j] >= 1)
            {
                ary[0]++;
            }
        }
        
        //
    倒序输出
        for (j = ary[0]; j > 0; j--)
        {
            printf("%d", ary[j]);
        }
        printf("\r\n");
        return 0;
    }

  • 相关阅读:
    Lesson 43-44 Vacation Season is Approaching?
    Lesson 41-42 How would you respond?
    Lesson 37-38 Do you want to be a millionaire?
    Lesson 35-36 What did you forget?
    Lesson 33-34 Dieting
    保送
    陈老师搬书
    水题(原 USACO Mother's Milk)
    最大公约数和最小公倍数问题(luogu 1029)
    最大子矩阵(OJ 1768)
  • 原文地址:https://www.cnblogs.com/w413133157/p/1650699.html
Copyright © 2020-2023  润新知