zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    【洛谷】P1303 A*B Problem(高精度乘法模板)
    快速幂
    【洛谷】P1601 A+B Problem 高精(高精度加法模板)
    进制转换
    【洛谷】P1551 亲戚(并查集模板)
    求最大公约数的两种方法
    快速排序
    异或交换两个数
    数字字符串互相转换的三种方法
    Hello world(我来啦)
  • 原文地址:https://www.cnblogs.com/w413133157/p/1650699.html
Copyright © 2011-2022 走看看