输入4往上运行结果全是3,求助
查看原帖
输入4往上运行结果全是3,求助
672632
Betty1236楼主2022/4/25 21:32
#include <iostream>
#include <vector>
using namespace std;
vector<int> mul(vector<int> &A,int b){
	vector <int> c;
	int t=0;
	for(int i=0;i<A.size();i++){
		t=t+A[i]*b;
		c.push_back(t%10);
		t/=10;
	}
	return c;
}
vector<int> pluus(vector<int> &a,vector<int> &b){
	int n;
	if(a.size()>=b.size()){
		n=b.size();
		for(int i=0;i<n;i++){
			a[i]+=b[i];
			if(a[i]>=10){
				a[i+1]++;
				a[i]%=10;
			}
		}
		return a;
	}else{
		n=a.size();
		for(int i=0;i<n;i++){
			b[i]+=a[i];
			if(b[i]>=10){
				b[i+1]++;
				b[i]%=10;
			}
		}
		return b;
	}
}
int main(){
	int n;
	cin>>n;
	vector<int> a[n];
	if(n==1){
		cout<<"1"<<endl;
	}
	else if(n==2){
		cout<<"3"<<endl;
	}else{
		for(int i=0;i<n;i++){
			a[i].push_back(1);
			for(int j=1;j<=i+1;j++){
				a[i]=mul(a[i],j);
			} 
		}
		vector<int> sum{0};
		for(int k=0;k<n;k++){
			sum=pluus(sum,a[k]);
		}
		for(int q=sum.size()-1;q>=0;q--){
			cout<<sum[q];
		}
	}
	return 0;
}
2022/4/25 21:32
加载中...