帮我看看代码错误
查看原帖
帮我看看代码错误
877468
zhangjunyi090702楼主2023/9/10 13:44
#include <iostream>
#include <vector>
using namespace std;

void multiply(vector<int>& num, int x) {
    int carry = 0;
    for (int i = 0; i < num.size(); i++) {
        int prod = num[i] * x + carry;
        num[i] = prod % 10;
        carry = prod / 10;
    }
    while (carry > 0) {
        num.push_back(carry % 10);
        carry /= 10;
    }
}

string factorial(int n) {
    if (n < 0) {
        return "Invalid input";
    } else if (n == 0 || n == 1) {
        return "1";
    } else {
        vector<int> num;
        num.push_back(1);
        for (int i = 2; i <= n; i++) {
            multiply(num, i);
        }
        string result;
        for (int i = num.size() - 1; i >= 0; i--) {
            result += to_string(num[i]);
        }
        return result;
    }
}

int main() {
    int n = 100;
    string result = 0;
    int m;
	cin >>m;
	for(int i = 1 ; i <= m ; i++)
		result += factorial(i);
    cout << result << endl;  // 输出100的阶乘结果
    return 0;
}

我已经在编译器选项中写了“-std=c++11”但是报错

"terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid"

帮我看看吧

2023/9/10 13:44
加载中...