本地和洛谷IDE都没问题,但就是全RA AC必关

P1303 A*B Problem

Sxu520 @ 2024-09-19 18:04:39

#include<iostream>
using namespace std;

void daoxu(int a[],int t){
    int temp=0;
    for(int i=0;i<t/2;i++){
        temp=a[i];
        a[i]=a[t-1-i];
        a[t-1-i]=temp;
    }
}                           //将数列倒序重排

int main(){
    int a[2005]={0},b[2005]={0},c[4010]={0};
    int p=0,q=0;
    char ch;
    for(int i=0;;i++){
        ch=getchar();
        if(ch=='\n')
            break;
        a[i]=ch-'0';
        p++;
    }
    for(int i=0;;i++){
        ch=getchar();
        if(ch=='\n')
            break;
        b[i]=ch-'0';
        q++;
    }
    daoxu(a,p);               
    daoxu(b,q);             //分别把a b数列倒序,a[0] b[0]都为个位 
    for(int i=0;i<p;i++){
        for(int j=0;j<q;j++){
            c[i+j]+=a[i]*b[j];
        }
    }                       //使a b中每一位分别相乘,并放到c数组中对应的位置上
    for(int i=0;i<4000;i++){
        if(c[i]>=10){
            c[i+1]+=c[i]/10;
            c[i]=c[i]%10;
        }
    }                       //对c数组从个位开始进位
    int k=0;
    for(int i=4000;i>=0;i--){
        if(k==0&&c[i]!=0){
            k=1;
        }
        if(k==1)
            cout<<c[i];
    }                       //从后面更高位开始输出c数组,得到相乘结果
    if(k==0)
        cout<<'0';          //若c中全为零,即相乘结果为0则输出0
    return 0;
}

by Cstong_y @ 2024-09-19 18:34:27

a = int(input())
b = int(input())
sum = a * b
print(sum)

by lostxxx @ 2024-09-19 18:39:46

@Sxu520 也许你应该换一种输入方式,比如说。

char a[20010];
cin>>a;

因为测试数据最后一行不一定有换行符 \n


by Sxu520 @ 2024-09-19 19:09:46

@lostxxx 哇偶真的耶,感谢大佬,已关注


by Sxu520 @ 2024-09-19 19:10:45

@Lxzrdg 感谢感谢,不过你这是python的吧,我用的是c++


|