求指导,他说字符串中的字符无效
查看原帖
求指导,他说字符串中的字符无效
551975
tadehaobaba、楼主2021/10/23 15:40
#include <bits/stdc++.h>
using namespace std;

const int NR = 1000;
//高精度乘法函数
string STRtip(string str1, string str2)
{
    int sum[NR + 4], a[NR + 4], b[NR + 4];
    if (str1.size() == 1 && str1[0] == '0') { return str1; }
    if (str2.size() == 1 && str2[0] == '0') { return str2; }
    int len1 = str1.size(), len2 = str2.size();
    for (int i = 0; i < len1;i++) { a[i] = str1[len1 - i - 1] - '0'; }
    for (int i = 0; i < len2;i++) { b[i] = str2[len2 - i - 1] - '0'; }
    
    int jw = 0; int len = len1 + len2 - 1;
    for (int i = 0; i < len1; i++)
    {
        jw = 0;
        for (int j = 0; j < len2; j++)
        {
            sum[i + j] = a[i] * b[j] + jw + sum[i + j];
            jw = sum[i + j] % 10;
            sum[i + j] = sum[i + j] / 10;
        }
        sum[i + len2] = jw;
    }
    string ans;
    for (int i = 0; i < len ; i++)
    {
        ans[i] = sum[len - i - 1] + '0';
    }
    return ans; 
}
string STRadd(string str1, string str2)
{
    //字符串的处理;
    int sum[NR] = { 0 }, a[NR] = { 0 }, b[NR] = { 0 };

    int len1 = str1.size(), len2 = str2.size();
    for (int i = 0; i < len1; i++) { a[i] = str1[len1 - i - 1] - '0'; }
    for (int i = 0; i < len2; i++) { b[i] = str2[len2 - 1 - i] - '0'; }
    //字符串相加
    int jw = 0; int len = max(len1, len2);
    for (int i = 0; i < len; i++) 
    {
        sum[i] = a[i] + b[i] + jw;
        jw = sum[i] % 10;
        sum[i] = sum[i] / 10;
    }
    //删除前导零
    for (int i = len - 1; i > 0; i--)
    {
        if (sum[i] == '0' && len > 1) { len--; }
        else { break; }
    }
    //输出
    string ans;
    for (int i = 0; i < len; i++)
    {
        ans[i] = sum[len - 1 - i] + '0';

    }
    return ans;
}
int main()
{
    int n;
    cin >> n;
    string ans="1";
    string time;
    string ok;
    if (n == 1) { cout << '1'; }
    else
    {
        for (int i = 1; i < n; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                string m = to_string(j);
                ans = STRtip(ans, m);
                
            }
            ok = STRadd(ans, time);
            time = ok;
            
        }
    }
    cout << time;
}
2021/10/23 15:40
加载中...