ConstStar
发布于 2023-05-10 / 55 阅读 / 0 评论 / 0 点赞

算法题:求N!的值

问题描述

用高精度方法,求N!的精确值(N以一般整数输入)。

输入格式

N

输出格式

N!

样例

输入

10

输出

3628800

解决方案

思路

高精度运算

代码

#include <iostream>

using namespace std;


int sum[50000] = {1};

int main() {

    int n;
    cin >> n;

    for (long long i = 1; i <= n; ++i) {

        for (int j = 49999; j >= 0; --j) {
            if (sum[j] == 0)
                continue;

            int temp = sum[j] * i;
            sum[j] = temp % 10;
            sum[j + 1] += temp / 10;
        }

        //整理进位
        for (int j = 0; j < 50000; ++j) {
            int temp = sum[j];
            sum[j] = temp % 10;
            sum[j + 1] += temp / 10;
        }
    }

    int index = 49999;
    for (; index >= 0; --index) {
        if (sum[index] != 0)
            break;
    }

    for (; index >= 0; --index) {
        cout << sum[index];
    }

    return 0;
}

评论