#include<iostream>
#include<vector>
using namespace std;
//乘法进位处理函数
void mul(vector<int>&r, int num){//新函数取容器的引用,对容器进行原地操作。不要忘记对变量的定义
int c=0;//c用来存储进位的值
for(int i=0;i<r.size();i++){//这个循环用来对容器中的每一位都乘以下一个数,保存c中的进位值加到下一位中
int p=r[i]*num+c;
r[i]=p%10;//取p的零
c=p/10; //取整,也就是取进位
}
while(c){//此处运用while循环,将多余的进位加到容器末尾
r.push_back(c%10);//push_back函数将括号中的数字添加到容器末尾
c/=10;//对c取整,如果c还存在就继续向后存
}
}
//用于实现阶乘的函数
void fac(int n){ //没有返回值,调用函数后直接输出
vector<int> r;
r.push_back(1);
for(int i=2;i<=n;i++){
mul(r,i);
}
for(int i=r.size()-1;i>=0;i--){//由于将高位都加到了容器的末尾,正常读取最终数的值需要倒叙输出这个函数
cout<<r[i];
}
}
int main(){
int n;
cin>>n;
fac(n);//调用阶乘函数
r
阶乘计算(高精度乘法 使用vector)
于 2024-04-01 21:47:51 首次发布