1000的阶乘

    xiaoxiao2022-07-14  225

    采用10000进制

    #include <stdio.h> /*计算你的阶乘函数*/ void factoral(int n) { static int num[10000 + 1]; // 初始化为1 num[0] = 1; // 当前数字的位数 int digit_number = 1; // 从二开始计算 for (int i = 2; i <= n; i++) { // 是否进位 int carry = 0; /* 2583 x 35 将35 分别与 3 8 5 2依次进行相乘 每次乘之后 进位 */ for (int j = 0; j < digit_number; j++) { // 采用10000进制 每次乘的时候加上进位 num[j] = num[j] * i + carry; // 取得进位 carry = num[j] / 10000; // 计算j位的数值 num[j] %= 10000; } // 最高位的进位 如果进位了 则当前数字的位数 digit_number + 1 if (carry > 0) { num[digit_number++] = carry; } } printf("%d", num[digit_number - 1]); for (int i = digit_number - 2; i >= 0; i--) { printf("d", num[i]); } printf("\n"); } int main() { int n; while (scanf("%d", &n)) { factoral(n); } return 0; }
    最新回复(0)