题目描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5×4×3×2×15!=5
输入格式
一个正整数N。
输出格式
一个正整数S,表示计算结果。
样例输入输出
输入:3
输出:9
解题思路:
遇到高精度的题只需要套用具体模板即可,多练练就会记住!!
具体细节具体分析XD;
这里的双层for循环是从1的阶乘开始加到n的阶乘
1. 高精度加法
高精度加法等同于算术加法,做单个的加法运算之后存下进位
A和B都为正整数
vector中下标为0存的是低位(以下都是)
数:123456789 9的下标为0 而不是8
2. 高精度乘低精度
高精度的每一位与低精度数字进行相乘,因为相乘最大为81,所以结果对10取余得到的数字就是结果在当前位的结果,然后对结果除以10保存更高一位的进位数字
A存放正整数,b也为正整
代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<int> mul(vector<int>& A, int& b)
{
int t = 0;
vector<int> C;
for (int i = 0; i < A.size(