P1009 [NOIP1998 普及组] 阶乘之和(C++)

#include 
#include 
using namespace std;
//高精度加法
string high_add(string a,string b){
    //把两个数的长度通过补0使其长度相等
    if(a.size()>b.size()){
        b.insert(0,a.size()-b.size(),'0');
    }
    if(a.size()=0;i--){
        int sum = (a[i]-'0')+(b[i]-'0'+jinwei);
        jinwei = sum/10;
        result.insert(0,to_string((sum%10)));
    }
    //最高位进位是否为1
    if(jinwei == 1){
        result.insert(0,"1");
    }
    return result;
}
//高精度乘法
string high_multiply(string a,string b) {
    string result[b.size()];
    for(int i=b.size()-1;i>=0;i--){
        int jinwei=0;
        for(int j=a.size()-1;j>=0;j--){
            int sum = (a[j]-'0')*(b[i]-'0')+jinwei;
            jinwei = sum/10;
            result[i].insert(0,to_string((sum%10)));
        }
        if(jinwei!=0){
            result[i].insert(0,to_string(jinwei));
        }
        result[i].insert(result[i].size(),b.size()-1-i,'0');
    }
    string Result = "0";
    for(int i=b.size()-1;i>=0;i--){
        Result = high_add(result[i],Result);
    }
    return Result;
}
//高精度阶乘
string jiecheng(int n){
    string result = "1";
    for(int i=1;i<=n;i++){
        result = high_multiply(result,to_string(i));
    }
    return result;
}
int main() {
    int n;
    cin>>n;
//    cout< 
 

你可能感兴趣的:(c++,算法,数据结构)