求调,无法输出结果

P1303 A*B Problem

que_de_yu_fu @ 2024-10-27 16:02:42

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
int l,l1,l2,i,j,a[2000],b[2000],c[2000];
string s1,s2;
int main()
{
    cin>>s1>>s2;
    l1=s1.length();
    l2=s2.length();
    for(i=0;i<l1;i++) {
        a[l1-i]=s1[i]-48;
        }
    for(j=0;j<l2;i++) {
        b[l2-j]=s2[j]-48;
    }   
    for(i=0;i<l1;i++){
        for(j=0;j<l2;j++){
            c[i+j]+=a[i]*b[j];  
        }
    }
    int l=l1+l2;
    for(i=0;i<l;i++){
        c[i+1]+=c[i]/10;
        c[i]%=10;

    }
    for(; !c[l];)
    {
        l--;
    }
    for(int i=l;i>=1;i--){ 
        cout<<c[i];
    }
    return 0;
    }   

求调,没法输出数据,也不结束程序,不知道哪里卡死了


by lty2023 @ 2024-10-27 16:05:35

for(; !c[l];) { l--; } 应该是这段吧


by lty2023 @ 2024-10-27 16:07:26

#include<bits/stdc++.h>
using namespace std;
int a[5001],b[5001],c[10002];
int main(){
    string a1,b1;
    cin>>a1>>b1;
    if(a1=="0"||b1=="0"){
        cout<<0;
        return 0;
    }
    reverse(a1.begin(),a1.end());
    reverse(b1.begin(),b1.end());
    for(int i=0;i<a1.size();i++){
        a[i]=a1[i]-'0';
    }
    for(int i=0;i<b1.size();i++){
        b[i]=b1[i]-'0';
    }
    for(int i=0;i<a1.size();i++){
        for(int j=0;j<b1.size();j++){
            c[i+j]+=a[i]*b[j];
            if(c[i+j]>9){
                c[i+j+1]+=c[i+j]/10;
                c[i+j]%=10;
            }
        }
    }
    bool bo=0;
    for(int i=10001;i>=0;i--){
        if(c[i]!=0){
            bo=1;
        }
        if(bo){
            cout<<c[i];
        }
    }
}

@que_de_yu_fu


by sdjjdjdjdjd @ 2024-10-27 16:08:10

代码中有一段一下代码

for(j=0;j<l2;i++) {
    b[l2-j]=s2[j]-48;
}

使用的为 j 而非 i ,但递增 i ,导致卡住


by Eason1010 @ 2024-10-27 16:17:30

循环时循环变量为j,但递增的是i

for(j=0;j<l2;i++) {
    b[l2-j]=s2[j]-48;
}

@que_de_yu_fu


by sdjjdjdjdjd @ 2024-10-27 16:20:52

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
int l,l1,l2,i,j,a[3000],b[3000],c[3000];// 数组开太小可能会炸
string s1,s2;
int main()
{
    cin>>s1>>s2;
    l1=s1.length();
    l2=s2.length();
    for(i=0;i<l1;i++){
        a[l1-i-1]=s1[i]-48;
    }
    for(j=0;j<l2;j++){
        b[l2-j-1]=s2[j]-48;
    }   
    for(i=0;i<l1;i++){
        for(j=0;j<l2;j++){
            c[i+j]+=a[i]*b[j];  
        }
    }
    int l=l1+l2;
    for(i=0;i<l;i++){
        c[i+1]+=c[i]/10;
        c[i]%=10;
    }
    for(; !c[l];){
        l--;
    }
    for(i=l;i>=0;i--){ 
        cout<<c[i];
    }
    return 0;
}

by que_de_yu_fu @ 2024-10-27 16:26:41

@Eason1010 thank you


|