为啥用string是0分,求解释
查看原帖
为啥用string是0分,求解释
830318
LOVEZMD楼主2022/12/20 13:10
#include<iostream>
#include<string>
#include<algorithm> 
using namespace std;
string add(string numa,string numb){
	string str;
	int len = max(numa.length(),numb.length()),last = 0;
	while(numa.length()<len) numa = "0"+numa;
	while(numb.length()<len) numb = "0"+numb;
	for(int i=len-1;i>=0;i--){
		int p = numa[i]+numb[i]-2*'0'+last;
		if(p>=10){
			p%=10;
			last = 1;
		}
		else last = 0;
		str=char(p+'0')+str;
	}
	return str;
}
string mul(string numa,string numb){
	string ans="0",str[numb.length()];
	for(int i=numb.length()-1;i>=0;i--){
		int last = 0,a;
		for(int t=numa.length()-1;t>=0;t--){
			int p = (numb[i]-'0')*(numa[t]-'0')+last;
			if(p>=10){
				last = p/10;
				p%=10;
				if(t==0){
					a = last;
				}
			}
			else last = 0;
			str[i]=char(p+'0')+str[i];
		}
		str[i].append(numb.length()-1-i,'0');
		if(a!=0){
			str[i]=char(a+'0')+str[i];
		}
		ans=add(ans,str[i]);
	}
	return ans;
}
int main(){
	int n;
	cin>>n;
	string num[n];
	string S = "0";
	for(int i=0;i<n;i++){
		num[i]="1";
		for(int t=2;t<=1+i;t++){
			num[i]=mul(num[i],to_string(t));
		}
		S=add(S,num[i]);
	}
	cout<<S;
	return 0;
}
2022/12/20 13:10
加载中...