Charlie_zs @ 2023-11-26 15:35:54
啊啊啊啊!写了一上午,到底哪里RE了呀!!!
#include <bits/stdc++.h>
using namespace std ;
string q , p ;
string mul( string x , string y )
{
//a[]数组乘数,b[]数组乘数,c[]=a[]*b[]
int a[1005] = {} , b[1005] = {} , c[1005] = {} ;
int k = 1 ;
//a[]数组转换成数字
for( int i = x.size() - 1 ; i >= 0 ; i -- )
{
a[k] = x[i] - '0' ;
k ++ ;
}
k = 1 ;
//b[]数组转换成数字
for( int i = y.size() - 1 ; i >= 0 ; i -- )
{
b[k] = y[i] - '0' ;
k ++ ;
}
//计算
for( int i = 1 ; i <= y.size() ; i ++ )
{
//外层循环:循环b数组的每一位
for( int j = 1 ; j <= x.size() ; j ++ )
{
//内层循环:模拟a*b[i]
c[i + j - 1] += b[i] * a[j] ;
//考虑进位
c[i + j] += c[i + j - 1] / 10 ;
c[i + j - 1] %= 10 ;
}
}
string z = "" ;
//进位,长度加一
int len = x.size() + y.size() ;
while( c[len] == 0 && len > 1 ) len -- ;
//转换成字符串
for( int i = len ; i >= 1 ; i -- )
{
z = z + char( c[i] + '0' ) ;
}
//输出
return z ;
}
int main()
{
cin >> q >> p ;
cout << mul( q , p ) ;
return 0 ;
}
by ServanteF @ 2023-11-26 15:45:19
康康
by Rainbow_rabbit @ 2023-11-26 15:48:37
c[]小了
by guaiguaitu @ 2023-12-08 21:59:12
@Charlie_zs a,b,c数组都开小了,至少要开4002