[HDU1402] A * B Problem Plus

题意:高精度乘法

Solution: 将两个十进制数看作数列,卷积后暴力进位即可。

int main() {
	ios::sync_with_stdio(false);
	string x,y;
	while(cin>>x>>y) {
		poly a,b;
		a.c.resize(x.length());
		b.c.resize(y.length());
		int la=x.length(),lb=y.length();
		for(int i=0;i<la;i++) a.c[i]=x[la-i-1]-'0';
		for(int i=0;i<lb;i++) b.c[i]=y[lb-i-1]-'0';
		a*=b;
		for(int i=0;i<a.c.size();i++) a.c[i]=(int)(a.c[i]+0.5);
		for(int i=0;i<a.c.size()-1;i++) a.c[i+1]+=(int)(a.c[i]/10),a.c[i]=(int)(a.c[i])%10;
		for(int i=a.c.size()-1;i>=0;--i) if(a.c[i] == 0) a.c.pop_back(); else break;
		for(int i=a.c.size()-1;i>=0;--i) cout<<(int)(a.c[i]);
		if(a.c.size()==0) cout<<0;
		cout<<endl;
	}
}
原文地址:https://www.cnblogs.com/mollnn/p/11633480.html