新思路,先乘完储存,求助,谢谢各位大佬!!!(详请见帖内)

P1303 A*B Problem

罗非鱼Requiem @ 2021-12-05 15:49:02

新思路,二维数组,先乘完储存,最后再加,求助,小数据能过,大数据出错,编译运行没问题,谢谢各位大佬!!!

#include <cmath>
#include <vector>
#include <string>
#include <bits/stdc++.h>

using namespace std;

int S[10007][10007], S1[10005], S2[10005], sum[10010], s=0;
string s1, s2;

int main() {
    cin >> s1 >> s2;

    for(int i=0;i<s1.length();i++)
        S1[i] = s1.at(s1.length()-i-1)-'0';
    for(int i=0;i<s2.length();i++)
        S2[i] = s2.at(s2.length()-i-1)-'0';

    int len = s1.length()+s2.length();

    for(int i=0;i<=len;i++) 
    {
        for(int j=0;j<=len;j++) 
        {
            S[i][j+i] = S1[j]*S2[i] + s;
            s = S[i][j+i]/10;
            S[i][j+i] %= 10;
        }
    }

    for(int i=0;i<=len;i++) {
        for(int j=0;j<=len;j++)
            sum[j] += S[i][j];
    }

    for(int i=0;i<=len;i++) {
        if(sum[i]/10 != 0) {
            sum[i] %= 10;
            sum[i+1]++;
        }
    }

    int index=len;
    while(sum[index]==0)
        index--;

    for(int i=index;i>=0;i--)
        cout << sum[i];

    if(index<0)
        cout << 0;

    return 0;
}

by Buried_Dream @ 2021-12-05 15:55:10

你这二维数组不炸空间吗


by 罗非鱼Requiem @ 2021-12-19 15:18:40

@TLE_Automation 会输出一个数字,位数约等于正确答案,可以正常编译运行(至少我电脑和学校电脑可以)


by 罗非鱼Requiem @ 2021-12-19 15:20:13

错误出在答案上,大数据没溢出,答案错了,而小数据完全没问题


by 罗非鱼Requiem @ 2021-12-19 15:24:11

结果是 AC WA WA WA WA 运行为100ms以内与100mb以内


|