阶乘计算(高精度乘法 使用vector)

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值