厌氧型代码求助
  • 板块题目总版
  • 楼主LangQi99
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/1/23 07:24
  • 上次更新2023/10/28 11:30:00
查看原帖
厌氧型代码求助
560128
LangQi99楼主2022/1/23 07:24

开O2就爆

#include <iostream>
#include <string>
using namespace std;
string a,b;
string add(string a,string b){
	int sum,last,next;
	string result="";
	int la=a.length();
	int lb=b.length();
	int diff=la-lb;
	if(diff>0) for(int i=0;i<diff;i++)b="0"+b;
	else for(int i=0;i<-diff;i++)a="0"+a;
	for(int i=max(la,lb)-1;i>=0;i--){
		sum=a[i]-'0'+b[i]-'0'+next;
		last=sum%10,next=sum/10;
		result=char(last+'0')+result;
	}
	if(next!=0)
	result=char(next+'0')+result;
	return result;
}
string single_multi(string a,int b){
	int sum,last,next;
	string result="";
	int la=a.length();
	for(int i=la-1;i>=0;i--){
		sum=(a[i]-'0')*(b)+next;
		last=sum%10,next=sum/10;
		result=char(last+'0')+result;
	}
	if(next!=0)
	result=char(next+'0')+result;
	return result;
}
string multi(string a,string b){
	string zero="0";
	if(a=="0"||b=="0")return zero; 
	int last,next;
	string sum,temp;
	int la=a.length();
	int lb=b.length();
	for(int i=lb-1;i>=0;i--){
		temp=single_multi(a,b[i]-'0');
		for(int j=lb-i-1;j>0;j--)temp=temp+"0";
		sum=add(temp,sum);	
	} 
	return sum;

}


int main(){
	cin>>a>>b;
	cout<<multi(a,b);
	return 0;
}
2022/1/23 07:24
加载中...