A*B ,TLE

P1303 A*B Problem

litianrui0201 @ 2025-01-06 15:19:50

#include<bits/stdc++.h>
using namespace std;
/*
12*34=408
例1: 
    21
    43 *
------------
    84
     63
------------
    804
so:12*34=408
*/
const int MAXN=2e3+10;
int abc[MAXN][MAXN];//第9行~第10行 
int av[MAXN];//第1个乘数 
int bv[MAXN];//第2个乘数  
int cv[MAXN];//积 
int main( ){
    string a,b;cin>>a>>b;
    for(int i=0;i<a.length( );i++)av[i]=a[a.length( )-i-1]-'0';
    for(int i=0;i<b.length( );i++)bv[i]=b[b.length( )-i-1]-'0';//把两个数(string a,b)转换成数组(int av[a.length( )],bv[b.length( )]) 
    for(int i=0;i<b.length( );i++){
        for(int j=0;j<a.length( );j++){
            abc[i][j+i]+=av[j]*bv[i];
            abc[i][j+i+1]+=abc[i][j]/10;//上一位进位
            abc[i][j+i]=abc[i][j]%10;//这一位的值
            //第9行~第10行 的数放入数组 
        }
    }
    for(int i=0;i<b.length( );i++){
        for(int j=0;i<a.length( );j++){
            cv[i]+=abc[i][j]+cv[i]; 
            cv[i+1]+=cv[i]/10;//上一位进位
            cv[i]=cv[i]%10;//这一位的值
            //求积(第9行~第10行的和(第12行))cv[a.length( )+b.length( )+5]
        }
    }
    bool flag=false;
    for(int i=a.length( )+b.length( )+5;i>=0;i--){
        if(cv[i]!=0&&flag==false){
            flag=true;
            cout<<cv[i];
        }else cout<<cv[i];
    }//输出积 
    return 0;
}

by cyq32ent @ 2025-01-06 15:22:45

for(int j=0;i<a.length( );j++){

(验证码ywww)


by litianrui0201 @ 2025-01-06 15:40:39

@cyq32ent终于有结果了


|