60分求调

P1303 A*B Problem

ywtank @ 2024-08-21 18:05:23

希望各位大佬帮忙看看

现场

#include <bits/stdc++.h>
using namespace std;
const int N=6000;
char sa[N],sb[N];
int a[N],b[N],c[N];
int main(){
    cin >> sa >> sb;
    int la=strlen(sa),lb=strlen(sb);
    for(int i=0;i<la;i++)a[la-i]=sa[i]-'0';
    for(int i=0;i<lb;i++)b[la-i]=sb[i]-'0';
    for(int i=1;i<=la;i++){
        for(int j=1;j<=lb;j++){
            c[i+j-1]+=a[i]*b[j];
        }
    }
    int lc=la+lb;
    while(c[lc]==0 && lc>1)lc--;
    for(int i=1;i<=lc;i++){
        c[i+1]+=(c[i]/10);
        c[i]%=10;
    }
    for(int i=lc;i>0;i--)cout << c[i];
    return 0;
}

by guanzisheng2 @ 2024-08-21 18:06:47

#include<bits/stdc++.h>
using namespace std;
char s1[2005],s2[2005];
int l1,l2,l;
int a[2005],b[2005],c[4005];
int main(){
    scanf("%s1",s1);
    scanf("%s2",s2);
    l1=strlen(s1);
    l2=strlen(s2);
    for(int i=0;i<l1;i++){
        a[l1-i]=s1[i]-'0';
    }
    for(int i=0;i<l2;i++){
        b[l2-i]=s2[i]-'0';
    }
    for(int i=1;i<=l1;i++){
        for(int j=1;j<=l2;j++){
            c[i+j-1]+=a[i]*b[j];
            if(c[i+j-1]>=10){
                c[i+j]+=c[i+j-1]/10;
                c[i+j-1]=c[i+j-1]%10;
            }
        }
    }
    int l;
    if(c[l1+l2]>0){
        l=l1+l2;
    }
    else{
        l=l1+l2-1;
    }
    if(a[l1]==0||b[l2]==0){
        l=1;
    }
    for(int i=l;i>=1;i--){
        cout<<c[i];
    }
}

|