社区讨论

求助(A*B 高精度)

学术版参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo7zhkh6
此快照首次捕获于
2023/10/27 10:18
2 年前
此快照最后确认于
2023/10/27 10:18
2 年前
查看原帖
C
#include <bits/stdc++.h>
using namespace std;

int a[50000001],b[50000001],c[50000001];
string A,B;
int len,lena,lenb;

int main(){
	cin >> A >> B;
	lena = A.length();
	lenb = B.length();
	
	for(int i = lena - 1;i >= 0;i --){
		a[lena - i] = A[i] - '0';
	} 
	for(int i = lenb - 1;i >= 0;i --){
		b[lenb - i] = B[i] - '0';
	} 
	for(int i = 1;i <= lenb;i ++){
		for(int j = 1;j <= lenb;j ++){
			c[i + j - 1] += a[i] * b[j];  
		}
	} 
	
	len = lena + lenb;
	
	for(int i = 1;i <= len;i ++){
		c[i + 1] += c[i] / 10;
		c[i] %= 10; 
	}
	
	for(;!c[len];) len --;
	for(int i = max(1,len);i >= 1;i --){
		cout << c[i];
	} 
	
	return 0; 
}

回复

4 条回复,欢迎继续交流。

正在加载回复...