大家帮忙看看,哪里错了???我在c++中测试没有错!!!(高精×高精)
查看原帖
大家帮忙看看,哪里错了???我在c++中测试没有错!!!(高精×高精)
741022
B2214shengmin楼主2022/6/25 21:32
#include<bits/stdc++.h>
using namespace std;
int int1[1010],int2[1010]; 
char str1[1010],str2[1010];
void init(char a[],int *b){//字符转数组 
	int l=strlen(a);
	for(int i=0;i<l;i++){
		b[i]=a[l-i-1]-'0'; 
	}
}
void mult(char a[],char b[]){//高精*高精 
	init(a,int1);init(b,int2);
	int c[2022],i,j;
	memset(c,0,sizeof(c));
	int len_a=strlen(a),len_b=strlen(b);
	for(i=0;i<len_a;i++){
		for(j=0;j<len_b;j++){
			c[i+j]=c[i+j]+int1[i]*int2[j];
			c[i+j+1]=c[i+1+j]+c[i+j]/10;//进位 
			c[i+j]%=10;//保留当前位置乘积 
		}
	}//i=len_a-1,b=len_b-1
	int k=len_a+len_b-1;
	while(c[k]>=10){
		c[k+1]=c[k]/10;
		c[k]%=10;
		k++;
	}
	while(k>0&&c[k]==0)k--;
	for(int h=k;h>=0;h--)cout<<c[h];
}
int main() {
	while(scanf("%s%s",str1,str2)==2){
		memset(int1,0,sizeof(int1));
		memset(int2,0,sizeof(int2));
		mult(str1,str2);
		cout<<endl;
	}
	return 0;						
}
2022/6/25 21:32
加载中...