代码解析:

multiply 函数实现高精度乘法。它接受一个存储数字的向量 num 和一个因子 factor 作为参数,并返回乘法结果的向量 result。

在 multiply 函数中,使用 carry 变量来保存进位。

在 for 循环中,逐位进行乘法运算,并将结果加入 result 向量中。同时更新进位 carry。

在 while 循环中,将剩余的进位加入 result 向量。

最后返回 result 向量,即乘法运算的结果。

factorial 函数计算阶乘。它接受一个整数 n 作为参数,并返回结果的向量 result。

初始时,将1添加到 result 向量中。

使用 for 循环,从2开始依次乘以2到 n 之间的整数,并将结果更新到 result 向量中。

最后返回 result 向量,即阶乘的结果。

printNumber 函数用于输出高精度整数。它接受一个存储数字的向量 num 作为参数。

从 num 的末尾开始遍历,输出每个数字。

最后输出换行符。

在 main 函数中,首先读入一个整数 n。

调用 factorial 函数计算 n 的阶乘,将结果保存在 result 向量中。

调用 printNumber 函数输出结果向量 result。



参考代码:

#include <iostream>

#include <vector>

using namespace std;

// 高精度乘法

vector<int> multiply(vector<int>& num, int factor) {

    vector<int> result;

    int carry = 0;


    for (int i = 0; i < num.size(); i++) {

        int temp = num[i] * factor + carry;

        result.push_back(temp % 10);

        carry = temp / 10;

    }


    while (carry > 0) {

        result.push_back(carry % 10);

        carry /= 10;

    }


    return result;

}


// 计算阶乘 n!

vector<int> factorial(int n) {

    vector<int> result;

    result.push_back(1);


    for (int i = 2; i <= n; i++) {

        result = multiply(result, i);

    }


    return result;

}


// 输出高精度整数

void printNumber(std::vector<int>& num) {

    for (int i = num.size() - 1; i >= 0; i--) {

        cout << num[i];

    }

    cout << endl;

}


int main() {

    int n;

    cin >> n;

    vector<int> result = factorial(n);

    printNumber(result);


    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论