天天看点

[蓝桥杯]阶乘计算

题目描述

输入n,输出n的阶乘。

输入

输入包含一个正整数n,n<=1000

输出

输出n!的准确值。

样例输入

10

样例输出

3628800

思路

高精度乘法(大数乘法)

AC代码

#include<bits/stdc++.h>
using namespace std;

int n;
vector<int> v;

vector<int> mul(int x){
	vector<int> res;
	int t=0;
	for(int i=0;i<v.size();i++){
		t=v[i]*x+t;
		res.push_back(t%10);
		t=t/10;
	}
	while(t!=0){
		res.push_back(t%10);
		t=t/10;
	}
	return res;
}
int main(){
	cin>>n;
	v.push_back(1);
	for(int i=2;i<=n;i++){
		v=mul(i);
	}
		
	for(int i=v.size()-1;i>=0;i--)
		cout<<v[i];
	
	
	return 0;
}
           

继续阅读