两个大数相乘-Java

两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示。例如S1=”7832974972840919321747983209327”,S2=”1987432091904327543957”,设计算法计算出S1*S2的结果,结果用String输出,不准用BigInter。

思路:
把字符串转换为数字数组,然后一位一位的乘法,然后在归化,逢十进一,需要注意2点:这个字符串可能为最高位为负,第二:最高位最后的结果不要为0。编写程序实现,然后把程序结果截图出来。注意:多测试几组数据。有正有负的情况,高位为0的情况。

import java.util.*;

public class string {



	public static void main(String[] args) {

		// TODO Auto-generated method stub

Scanner sc=new Scanner(System.in);

String s1=sc.next();

String s2=sc.next();

int []a1=new int [s1.length()];

int []a2=new int [s2.length()];

int []c=new int [a1.length+a2.length];

int i,j;

for( i=0;i<s1.length();i++)

{

	a1[i]=Integer.parseInt(s1.substring(i,i+1));

}

for( j=0;j<s2.length();j++)

{

	a2[j]=Integer.parseInt(s2.substring(j, j+1));

}

//逐个相乘 ab*cd=ac(bc+ad)bd;

for(i=0;i<a1.length;i++)

{

	for(j=0;j<a2.length;j++)

	{

        c[i+j]+=a1[i]*a2[j];

	}

}

//从后往前满十进位

for(i=c.length-1;i>0;i--)

{

	c[i-1]+=c[i]/10;

	c[i]=c[i]%10;

}

String cs="";

for( i=0;i<c.length-1;i++)

{

	cs+=""+c[i];

}

System.out.println(cs);

	}



}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值