高精乘法求调
  • 板块学术版
  • 楼主I_Love_DS
  • 当前回复19
  • 已保存回复19
  • 发布时间2024/4/5 14:15
  • 上次更新2024/4/5 16:56:51
查看原帖
高精乘法求调
1118614
I_Love_DS楼主2024/4/5 14:15
string _multi(string a,string b){
	int lena = a.size(),lenb = b.size(),lenc = lena + lenb;
	int a1[lenc + 1],b1[lenc + 1],c1[lenc + 1];
	memset(a1,0,sizeof(a1));
	memset(b1,0,sizeof(b1));
	memset(c1,0,sizeof(c1));
	for (int i = 1; i <= lena; i++) a1[i] = a[lena - i] - '0';
	for (int i = 1; i <= lenb; i++) b1[i] = b[lenb - i] - '0';
	for (int i = 1; i <= lena; i++) 
		for (int j = 1; j <= lenb; j++) 
			c1[i + j - 1] += a1[i] * b1[j];
	for (int i = 1; i <= lenc; i++) {
		if (c1[i] >= 10) {
			c1[i + 1] += c1[i] / 10;
			c1[i] %= 10;
		}
	}
	while (c1[lenc] == 0 && lenc > 1) {
		lenc--;
	}
	string c;
	for (int i = 0; i < lenc; i++) {
		c[i] = c1[lenc - i] + '0';
	}
	return c;
}
2024/4/5 14:15
加载中...