蒟蒻橙题高精求助!悬关
查看原帖
蒟蒻橙题高精求助!悬关
1061189
zhang_feng_rui楼主2023/11/12 12:36

P1303

40分

#include<bits/stdc++.h>
using namespace std;
string in_a,in_b;
const int N=4e3+10;
int x[N],y[N],a[N],b[N],c[2*N];
int na,nb,n,m;
bool flag=false;
void in(){
	cin>>in_a>>in_b;
	na=in_a.size();
	nb=in_b.size();
	n=max(na,nb);
	m=na+nb;
}
void change(){
	for(int i=0;i<na;i++)x[i]=(int)in_a[i]-'0';
	for(int i=0;i<nb;i++)y[i]=(int)in_b[i]-'0';
	for(int i=0;i<n;i++)a[i]=x[i-(n-na)];
	for(int i=0;i<n;i++)b[i]=y[i-(n-nb)];
}
void print(){
	for(int i=0;i<n;i++)printf("%d",a[i]);
	cout<<endl;
	for(int i=0;i<n;i++)printf("%d",b[i]);
	cout<<endl;
}
void calc(){
	for(int i=(n-na);i<n;i++)for(int j=(n-nb);j<n;j++)c[i+j]+=a[i]*b[j];
	int tmp=0;
//	for(int i=(n-na)+(n-nb);i<m-1+(n-na)+(n-nb);i++)printf("%d ",c[i]);
//	cout<<endl;
	for(int i=m-1;i>=0;i--){
		int tot=c[i];
		c[i]=(c[i]+tmp)%10;
		tmp=(tot+tmp)/10;
//		printf("tmp=%d\n",tmp);
	}
	if(tmp>0){
		cout<<tmp;
		flag=true;
	}
//	for(int i=(n-na)+(n-nb);i<m-1+(n-na)+(n-nb);i++)printf("%d ",c[i]);
//	cout<<endl;
}
void out(){
	for(int i=0/*(n-na)+(n-nb)*/;i<m-1+(n-na)+(n-nb);i++){
		if(c[i]!=0)flag=true;
		if(flag)printf("%d",c[i]);
	}
}
int main(){
	in();//输入
	change();//转换
//	print();//调试输出
	calc();//计算
	out();//输出
	return 0;
}

自测的小数据都没问题的,大数据就过不了,不知道为啥

能说出蒟蒻错哪里并帮助蒟蒻AC的有关

2023/11/12 12:36
加载中...