20分求助
  • 板块P1303 A*B Problem
  • 楼主ThChamp
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/12/26 10:06
  • 上次更新2023/10/24 06:35:37
查看原帖
20分求助
846637
ThChamp楼主2022/12/26 10:06

自己算都过了,提交就是20分下载数据后自己跑也过了,有没有大佬帮我看看

#include <cstdio>

int  a[50001], b[50001], c[50010];

int main() {
    int alen=0, blen=0; // 长度
    char ch = getchar();
    while(ch >= '0' && ch <='9') { // 快速读入两个数组
        a[alen++] = ch-'0';
        ch = getchar();
    }
    ch = getchar();
    while(ch >= '0' && ch <='9') {
        b[blen++] = ch-'0';
        ch = getchar();
    }
    for (int i = alen-1; i>=0; i--) // 错位相乘
        for (int j = blen-1; j>=0; j--)
            c[i+j+1]+=a[i]*b[j];

    for (int i = alen+blen-1; i>=1; i--) { // 计算进位
        c[i-1]+=c[i]/10;
        c[i]%=10;
    }
    int len = 0;
    while (c[len]==0 && len<alen+blen) { // 抛去废0
        len++;
    }
    if (len == alen+blen)
        printf("0");
    for (int i = len; i < alen+blen; i++) // 输出答案
        printf("%d", c[i]);
    return 0;
}

2022/12/26 10:06
加载中...