package 有用的方法.精度问题;
import java.util.Scanner;
public class AXB {
/*
两个数相乘,,
最重要的是c[i+j]+=a[i]*b[j];
*/
public static void main(String[] args) {
//使用数组
//从低位存大数
Scanner sc = new Scanner(System.in);
String num1 = sc.next();
String num2 = sc.next();
int n = num1.length();
int m = num2.length();
if (num1.equals("0")||num2.equals("0")){
System.out.println("0");
return;
}
int[] a = new int[n];
int[] b = new int[m];
//初始化
int i,j;
for(i=0,j=n-1;i<n;i++,j--)
a[i]=num1.charAt(j)-'0';
for(i=0,j=m-1;i<m;i++,j--)
b[i]=num2.charAt(j)-'0';
//定义第三个数组来存储结果
int [] c =new int[n+m+5];
for(i=0;i<n;i++)
for(j=0;j<m;j++){
c[i+j]+=a[i]*b[j];
}
//处理进位的情况
for(i=0;i<n+m;i++){
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
//打印结果
for(j=n+m+1;j>=0;j--){
if(c[j]!=0)
break;
}
for(i=j;i>=0;i--)
System.out.print(c[i]);
System.out.println();
}
}
两数相乘高精度问题
最新推荐文章于 2024-03-27 12:55:39 发布