求助!0分/20分

P1303 A*B Problem

Yuley @ 2024-09-13 20:07:08

求助大佬解答,谢谢

#include<iostream>
using namespace std;
int a[10005];
int b[10005];
int c[10005];
int main(){
    string n,m;
    cin>>n>>m;
    int lenn=n.length();
    int lenm=m.length();
    for(int i=0;i<lenn;i++){
        a[i]=n[lenn-i-1]-'0';
    }
    for(int i=0;i<lenm;i++){
        b[i]=m[lenm-i-1]-'0';
    }
    int lenc=lenn+lenm;
    for(int i=0;i<lenn;i++){
        for(int j=0;j<lenm;j++){
            c[i+j]=a[i]*b[j];
        }
    }
    for(int i=0;i<lenc;i++){
        if(c[i]>=10){
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
    }
    while(c[lenc-1]==0&&lenc>=1)lenc--;
    for(int i=lenc-1;i>=0;i--)cout<<c[i];
    return 0;
}

by Y_J_Y @ 2024-09-13 20:28:31

第20行改为c[i+j]+=a[i]*b[j]; 第29改为while(c[lenc-1]==0&&lenc>1)lenc--;


by girl__20130619 @ 2024-09-13 20:34:36

@Yuley

#include<iostream>
#include<cstring>
using namespace std;
char s[210];
int a[210], c[310], b[210], la, lb, lc; 
int main(){
    scanf("%s",s+1);
    la=strlen(s+1);
    for(int i=1;i<=la;i++) a[i]=s[la-i+1]-'0';
    scanf("%s",s+1);
    lb=strlen(s+1);
    for(int i=1;i<=lb;i++) b[i]=s[lb-i+1]-'0';
    lc=la+lb;
    for(int i=1;i<=200;i++) c[i]=0;
    for(int i=1;i<=la;i++) for(int j=1;j<=lb;j++) c[i+j-1]+=a[i]*b[j];  
    for(int i=1;i<=lc;i++){
        c[i+1]=c[i+1]+c[i]/10;
        c[i]%=10;
    }
    while(c[lc]==0&&lc>1) lc--;
    for(int i=lc;i>=1;i--) printf("%d",c[i]);   
}

求关


by liyunhe @ 2024-09-13 20:39:37

@Yuley

for(int i=0;i<lenn;i++){
    for(int j=0;j<lenm;j++){
        c[i+j]=a[i]*b[j];
    }
}

你难道还没发现问题?


by liyunhe @ 2024-09-13 20:43:38

你的代码没错只是少了+

for(int i=0;i<lenn;i++){
    for(int j=0;j<lenm;j++){
        c[i+j]+=a[i]*b[j];
    }
}

但是这样 #1还是过不了
需要加一个特判

if(n=="0"||m=="0"){
   cout<<0<<endl;
   return 0;
}

by liyunhe @ 2024-09-13 20:46:11

@Yuley 你看看用你的代码过的


by Yuley @ 2024-09-14 18:40:26

@liyunhe 感谢大佬回复,本蒟蒻很粗心,而且很久没有写高精度了


by Yuley @ 2024-09-14 18:40:42

@girl__20130619 感谢大佬回复,本蒟蒻很粗心,而且很久没有写高精度了


by Yuley @ 2024-09-14 18:40:51

@Y_J_Y 感谢大佬回复,本蒟蒻很粗心,而且很久没有写高精度了


|