大数相乘 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年得以发表.此算法主要用于两个大数相乘 ...
随机推荐
- 终端复用工具-tmux
目录 终端复用工具--Tmux 一.为什么要用Tmux? 二.tmux是什么? 三.Tmux基本概念 四.Tmux使用规则 1.安装Tmux 2.基本使用 3.自定义配置文件 五.补充 1.tmux ...
- NORDIC 修改MTU
https://www.cnblogs.com/jiangjiu/p/10063556.html 注意要修改RAM起始地址,因为MTU增大了
- python网络编程:socket套接字
一.socket 二.TCP服务器 三.TCP客户端 四.UDP服务器 五.UDP客户端 六.聊天的客户端 七.聊天的服务器 一.socket """ 学习网络编程 其实 ...
- iptables 转发
1.通过代理访问121.8.210.236的转向访问192.168.191.236 sudo iptables -t nat -A OUTPUT -d 121.8.210.236 -j DNAT -- ...
- seq2seq keras实现
seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定 ...
- Springboot定时任务实现动态配置Cron参数(从外部数据库获取)
https://blog.csdn.net/qq_35992900/article/details/80429245 我们主要讲解它的动态配置使用方法. 在刚开始使用的时候,我们更改一个任务的执行时间 ...
- 集合(五) TreeMap
4.TreeMap SortedMap接口继承Map接口,是排序键值对的接口,实现排序的的方法是Comparator.而NavigableMap接口继承于SortedMap,新增了一些导航方法.而Tr ...
- Gradle 配置国内镜像
项目级配置 在项目中找到如下文件 打开,添加上阿里云镜像 maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
- 批量升级 CentOS bash
#! /usr/bin/env python #coding=utf-8 from fabric.api import * from fabric.state import * env.rol ...
- Codeforces Round #427 (Div. 2) [ C. Star sky ] [ D. Palindromic characteristics ] [ E. The penguin's game ]
本来准备好好打一场的,然而无奈腹痛只能带星号参加 (我才不是怕被打爆呢!) PROBLEM C - Star sky 题 OvO http://codeforces.com/contest/835/p ...