大数相乘 java
<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的更多相关文章
- 华为上机测试题(大数相乘-java)
PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...
- 两个大数相乘-Java
两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示.例如S1="7832974972840919321747983209327",S2="19 ...
- Multiply Strings 大数相乘 java
先贴上代码 public String multiply(String num1, String num2) { String str = ""; StringBuffer sb ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...
- java版大数相乘
在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...
- Java 大数相乘、大数相加、大数相减
思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...
- 大数相乘算法C++版
#include <iostream> #include <cstring> using namespace std; #define null 0 #define MAXN ...
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...
- Karatsuba乘法--实现大数相乘
Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...
随机推荐
- web项目部署在centos 7验证码显示不出来解决方案
今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...
- Java学习笔记【十二、网络编程】
原计划的学习结束时间是3月4日,目前看来已经延迟了,距离低标还差一些,多方面原因,也不找借口,利用周末赶赶进度,争取本周末把低标完成吧! 参考: http://www.runoob.com/java/ ...
- 【异常】lockfile.AlreadyLocked: ~/airflow/airflow-scheduler.pid is already locked
1 完整异常信息 File "/usr/bin/airflow", line 32, in <module> args.func(args) File "/u ...
- python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块
今天讲课内容有两大部分: 一.文件目录规范二.定制程序入口三.使用标准目录后四.常规函数time.datetime 一.标准目录规范 之前用过的案例atm机+购物商城代码过长,在学习了模块和包以后,我 ...
- windows 快捷键收集
1. 放大镜 windows徽标 + "+“ 2. 直接显示桌面 windows徽标 + D 3. 收起所有窗口 windows徽标 + M 4. 浏览器中恢复之前关闭的页面 Ctrl + ...
- js遍历数组随机返回指定的数组结果
////随机生成数组中自定义的个数返回一个字符串数组 function getArrayItems(arr, num) { //新建一个数组,将传入的数组复制过来,用于运算,而不要 ...
- HNOI 世界树 虚树
//virtual tree /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #defin ...
- loj2424 「NOIP2015」子串[字符串DP]
给定字符串 A,B,要求从 A 中取出互不重叠的 k 个非空子串,按照出现顺序拼起来后等于 B.求方案数.n ≤ 1000,m ≤ 200. 主要是状态的转移.先设计出$f_{i,j,k}$表长度$B ...
- img标签的before,after伪类
在CSS中总有一些你不用不知道,用到才知道的“坑”.比如今天要谈的,把 before, after 伪类用在 <img> 标签上.嗯,实际上你用你会发现,在大多数浏览器这是无效的,dom中 ...
- 【原】涉及数据库的单元测试-JTeser
JTeser方法之一:@DbFit 一.maven 依赖项 <dependency> <groupId>org.testng</groupId> <artif ...