Java 大数A+B
public class Solution {
public int length = 0;
public Object[] numToArrays(int num) {
List<Integer> list = new ArrayList<Integer>();
while (num / 10 != 0) {
list.add((num) % 10);
num /= 10;
}
list.add(num % 10);
return list.toArray();
}
public Object[] stringToArrays(String s1){
Object[] strs = new Integer[s1.toCharArray().length];
char[] chs = s1.toCharArray();
for(int i=strs.length-1;i>=0;i--){
strs[strs.length-1-i] = Integer.parseInt(String.valueOf(chs[i]));
}
return strs;
}
public int[] bigSum(Object a, Object b) {
length = 0;
boolean isUp = false;
int[] result = new int[10000];
Object[] as = null;
Object[] bs = null;
if(a instanceof String){
as = stringToArrays((String)a);
bs = stringToArrays((String)b);
}else if(a instanceof Integer){
as = numToArrays((int)a);
bs = numToArrays((int)b);
}
int i = 0;
int s = Math.min(as.length, bs.length);
Object[] larrays = as.length >= bs.length ? as : bs;
int l = larrays.length;
for (; i < s; i++) {
int c = (int) as[i] + (int) bs[i] + result[i];
if (c >= 10) {
// 进位,需增高一位
result[i + 1] += 1;
// 本位取余
result[i] = c % 10;
if (i + 1 >= s) {
isUp = true;
}
} else {
result[i] = c;
}
length++;
}
int flag=0;
if (isUp){
length++;
flag=1;
}
isUp = false;
// 处理不等长
if (s != l) {
for (int k = length-flag; k < l; k++) {
int temp = result[k] + (int) larrays[k];
if (temp >= 10) {
result[k] = temp % 10;
result[k + 1] = 1;
if (k + 1 >= l) {
isUp = true;
}
} else {
result[k] = temp;
}
length++;
}
if(flag==1){
length--;
}
}
if (isUp)
length++;
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
int[] list = s.bigSum("164455462456282903781237128937128937812937812973891272389456456222","123245445243512");
for (int i = s.length - 1; i >= 0; i--) {
System.out.print(list[i]);
}
}
输出:164455462456282903781237128937128937812937812973891395634901699734
Java 大数A+B的更多相关文章
- java大数
java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...
- JAVA大数运算
java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- HDU5047Sawtooth(java大数)
HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...
- JAVA大数类
JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...
- HDU4762(JAVA大数)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- ZOJ3477&JAVA大数类
转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...
- 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&记忆化递归
HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...
- 收藏的一段关于java大数运算的代码
收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...
- java大数判断相等
java大数判断相等: 1.equals()方法2.compareTo()方法区别:2.00与2.0 equals()方法判断不等,compareTo()方法判断相等,科学的说法可以看java api ...
随机推荐
- mysql调优 参数说明
原文地址:http://wenku.baidu.com/view/49087bbafd0a79563c1e72c8.html 关键字: mysql *1, 查看 MySQL 服务器配置信息 *1. m ...
- 一个简单的Java集合范围过滤的多个方式对比
在一个项目里面有这么一个技术需求: 1.集合中元素个数,10M 2.根据上限和下限从一个Set中过滤出满足要求的元素集合. 实际这个是个很典型的技术要求, 之前的项目也遇见过,但是因为当时的类库不多, ...
- Promise基础
前言: ES2015将Promise引入语言规范,包括fetch等在内的API也构建在Promise之上.作为让js摆脱“回调地狱”的重要一环和众多框架中的重要基础设施之一,学习如何自己实现一个Pro ...
- 在Java中打开浏览器
try { Runtime.getRuntime().exec( "explorer http://www.baidu.com"); java.net.URI uri = new ...
- WPF学习之数据绑定
WPF中的数据绑定提供了很强大的功能.与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,例如Binding对象的自动通知/刷新,Converter,Validation Rules,Tw ...
- Pomelo的Router
在pomelo中,对服务器的扩充非常简单,只需要修改一下配置文件config/servers.json,多添几台服务器配置就行了,如果我们的connector和chat都具有多台服务器,因此需要考虑对 ...
- Spring context:component-scan中使用context:include-filter和context:exclude-filter
Spring context:component-scan中使用context:include-filter和context:exclude-filter XML: <?xml version= ...
- Markdown使用教程
Markdown 是一种 轻量级标记语言,主要特点是:使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档". 本文参考了:语法手册.简书介绍. 常用语法 一.标 ...
- jquery.validate.js之自定义表单验证规则
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Prim和Kruskal最小生成树
标题: Prim和Kruskal最小生成树时 限: 2000 ms内存限制: 15000 K总时限: 3000 ms描述: 给出一个矩阵,要求以矩阵方式单步输出生成过程.要求先输出Prim生成过程,再 ...