关于代码
  • 板块P1303 A*B Problem
  • 楼主xiao__
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/15 21:58
  • 上次更新2023/11/3 03:30:24
查看原帖
关于代码
1007419
xiao__楼主2023/8/15 21:58
#include<bits/stdc++.h>
using namespace std;
int numa[500005],numb[500005],ans[1000005];string a,b;
signed main(){
	
	cin>>a>>b;
	for(int i=0;i<a.size();i++){
		numa[a.size()-i]=a[i]-'0';
	}
	for(int i=0;i<b.size();i++){
		numb[b.size()-i]=b[i]-'0';
	}
	int len=a.size()+b.size();
	for(int i=1;i<=a.size();i++){
		for(int j=1;j<=b.size();j++){
			ans[i+j+1]+=numa[i]*numb[j];
		}
	}
	for(int i=1;i<=len;i++){
		ans[i+1]+=ans[i]/10;
		ans[i]%=10;
	}
	while(ans[len]==0&&len>1){
		len--;
	}
	for(int i=len;i>=1;i--){
		cout<<ans[i];
	}
	return 0;
}

与

#include <bits/stdc++.h>
using namespace std;
string a, b;
int na[2005], nb[2005], ans[4100], len;
int main(){
	cin >> a >> b;
	for(int i = 0; i < a.size(); i++){
		na[a.size() - i] = a[i] - '0';
	}
	for(int i = 0; i < b.size(); i++){
		nb[b.size() - i] = b[i] - '0';
	}
	len = a.size() + b.size();
	for(int i = 1; i <= a.size(); i++){
		for(int j = 1; j <= b.size(); j++){
			ans[i + j - 1] += na[i] * nb[j];
		}
	}
	for(int i = 1; i <= len; i++){
		ans[i + 1] += ans[i] / 10;
		ans[i] %= 10;
	}
	while(ans[len] == 0 && len > 1){
		len--;
	}
	for(int i = len; i >= 1; i--){
		cout << ans[i];
	}
	return 0;
}

思路感觉一样,为什么第一个20第二个100

2023/8/15 21:58
加载中...