<pre name="code" class="java">package bigMultiply;

import java.math.BigInteger;
/**
* 大數相乘
* @author root
*
*/
public class MyMultiply1 { /**
* @param args
*/
public static void main(String[] args) {
String str1 = "23456789009877666555544444";
String str2 = "346587436598437594375943875943875"; String result = multiply(str1, str2);
String result1 = multiply1(str1, str2); System.out.println("乘数:"+str1);
System.out.println("乘数:"+str2);
System.out.println("结果:"+result);
System.out.println("结果:"+result1);
} private static String multiply1(String str1, String str2){
BigInteger bigInteger1=new BigInteger(str1);
BigInteger bigInteger2=new BigInteger(str2);
//multiplay
bigInteger1=bigInteger1.multiply(bigInteger2);
return bigInteger1.toString();
} public static String multiply(String str1, String str2) {
//判断符号
char flag1;
char flag2;
char flag;
if(str1.charAt(0)=='-'){
flag1 = '-';
str1 = str1.substring(1);
}else if(str1.charAt(0)=='+'){
flag1 = '+';
str1 = str1.substring(1);
}else{
flag1 = '+';
}
if(str2.charAt(0)=='-'){
flag2 = '-';
str2 = str2.substring(1);
}else if(str2.charAt(0)=='+'){
flag2 = '+';
str2 = str2.substring(1);
}else{
flag2 = '+';
}
if(flag1==flag2){
flag = '+';
}else{
flag = '-';
}
// 两数乘积位数不会超过乘数位数和+ 3位
char [] s1 = new StringBuffer(str1).reverse().toString().toCharArray();
char [] s2 = new StringBuffer(str2).reverse().toString().toCharArray(); int [] result = new int[str1.length()+str2.length()+3];
//逐位相乘
for(int i=0; i<s1.length; i++){
for(int j=0; j<s2.length; j++){
result[i+j]+= (s1[i]-'0')*(s2[j]-'0');
}
}
//进位
for(int i=0; i<result.length-1; i++){
result[i+1]+=result[i]/10;
result[i] = result[i]%10;
}
//输出
boolean start = false;
StringBuilder sb = new StringBuilder();
sb.append(flag);
for(int i=result.length-1; i>=0; i--){
if(result[i]!=0){
start=true;
}
if(start){
sb.append(result[i]);
}
}
return sb.toString();
}
}
												

大数相乘 java的更多相关文章

  1. 华为上机测试题(大数相乘-java)

    PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...

  2. 两个大数相乘-Java

    两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示.例如S1="7832974972840919321747983209327",S2="19 ...

  3. Multiply Strings 大数相乘 java

    先贴上代码 public String multiply(String num1, String num2) { String str = ""; StringBuffer sb ...

  4. POJ 2389 Bull Math(水~Java -大数相乘)

    题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

  5. java版大数相乘

    在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...

  6. Java 大数相乘、大数相加、大数相减

    思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...

  7. 大数相乘算法C++版

    #include <iostream> #include <cstring> using namespace std; #define null 0 #define MAXN ...

  8. Linux C/C++ 编程练手 --- 大数相加和大数相乘

    最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...

  9. Karatsuba乘法--实现大数相乘

    Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...

随机推荐

  1. vue中移动端滚动事件,点击一次触发了事件两次(better-scroll)

    解决办法一: 将button标签换成a标签 问题代码: <span class="submitBtn" @click.stop="replyReport()&quo ...

  2. 关于同一台服务器上两个PHP项目相互访问超时的问题

    当一台服务器部署多个PHP项目,各自运行时并无干扰, 即使都使用 9000端口来跑php 但是有一种情况,当其中一个项目需要调用另一个php项目的接口时,便会超时,这是因为php是单线程的同步的 也许 ...

  3. zabbix监控项截图整理

    general监控项

  4. moment.js 使用方法记录

    操作 设值/赋值 1. 具体方法. 1)毫秒(millisecond) moment().millisecond(Number); moment().millisecond(); // Number ...

  5. BPR贝叶斯个性化排序算法

    全序关系:集合中的任两个元素之间都可以比较的关系.

  6. Twitter的支撑架构:扩展网络与存储并提供服务——架构原则:一次性将事情做对,NFL原则 LSM+B+存储替代cassandra

    Twitter工程团队近期提供了Twitter核心技术的演进和扩展的详细资料,这些核心技术支撑了Twitter自营数据中心的系统架构,用于提供社会媒体服务.他们分享的关键经验包括:超越原始规格和需求进 ...

  7. 一步一步带你安装史上最难安装的 vim 插件

    YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.参考: https://github ...

  8. Android Gradle 常用配置

    Gradle:multiDexEnabled之DEX 方法超过64K限制和gradle编译OOM问题解决DEX 方法超过64K限制 UNEXPECTED TOP-LEVEL EXCEPTION: co ...

  9. 实现一个可无限折叠的table

    前言 如何在table上实现一个可折叠展开子节点的table?先看下最终实现效果图: 其实这个项目在两个月以前就以上上传在github了,但当时没有写详细的实现过程.自己前几天发表的一篇技术贴当下拉列 ...

  10. 页面初次渲染loading图

    当第一次进入页面时,可能由于网速或其他原因请求接口需要等待很长时间,这是页面一片空白,很难看,切交互性也不好,这是,我们常常放上一个loading等待图给用户以反馈 // 页面尚未加载时的loadin ...