java 整数加减_JAVA超大整数的加法如何改成减法
展开全部
你这个道题很有意思,应该是怎么使用算法吧:
减法从各位开始计算,需要判断减数和被减62616964757a686964616fe58685e5aeb931333337613834数的大小:
A. 当减数 >= 被减数,标记后一位不用退位
B. 当减数
代码如下:
public class HandleLargeNumber {
public static void main(String[] args) {
int a[] = { 0, 9, 9, 7, 9, 4, 5, 6, 7, 2, 3, 4, 5, 6, 4, 7, 8, 9, 8, 7, 6, 9 };
int b[] = { 0, 0, 5, 9, 1, 6, 4, 5, 6, 2, 3, 4, 5, 7, 2, 1, 3, 4, 0, 3, 2, 9 };
jianFa(a,b);
// 下面是验证:通过BigInteger来做
BigInteger a1 = new BigInteger("997945672345647898769");
BigInteger a2 = new BigInteger("59164562345721340329");
System.out.println(a1.subtract(a2));
}
public static void jianFa(int[] a, int[] b) {
int idx1 = getStart(a);
print(a, idx1);
int idx2 = getStart(b);
print(b, idx2);
boolean isTui = false; // 是否退位标记
int c[] = new int[a.length];
for (int i = a.length; i > idx1; i--) {
if (!isTui) {
// 不退位
int aNum = a[i - 1];
int bNum = b[i - 1];
if (aNum >= bNum) {
c[i - 1] = aNum - bNum;
isTui = false;
} else {
c[i - 1] = 10 + aNum - bNum;
isTui = true;
}
} else {
// 退位
int aNum = a[i - 1] - 1;
int bNum = b[i - 1];
if (aNum >= bNum) {
c[i - 1] = aNum - bNum;
isTui = false;
} else {
c[i - 1] = 10 + aNum - bNum;
isTui = true;
}
}
}
System.out.printf("\n等于:\n");
print(c, getStart(c));
}
private static int getStart(int[] arr){
for (int i = 0; i
if (arr[i] != 0) {
return i;
}
}
return 0;
}
private static void print(int[] arr, int start){
for (int i = start; i
System.out.printf("%d", arr[i]);
}
System.out.print("\n");
}
}
上面的例子只适用用减数大于被减数,当减数小于被减数时,需要额外的计算,不过思路差不多,复杂度大了很多,呵呵。
亲,如果回答满意,请及时采纳,谢谢!!!
java 整数加减_JAVA超大整数的加法如何改成减法相关推荐
- java 整数加减_Java计算长整数加减(字符串表示)
1 /** 2 * Created by areful on 2019/11/133 */ 4 public classCalcStringNumber {5 private static final ...
- java时间加减_java时间加减
展开全部 1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- java 时间加减_java如何实现当前时间加减30分钟的方法
java如何实现当前时间加减30分钟的方法 发布时间:2020-08-17 09:41:34 来源:亿速云 阅读:280 作者:小新 这篇文章主要介绍java如何实现当前时间加减30分钟的方法,文中介 ...
- java long加减_java 日期加减
Date d=new Date(); SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); System.out.prin ...
- java 时间加减_Java中时间加减的比较
public class TestDate{ public static void main(String[] args){ try{ Date date=new Date(); DateFormat ...
- java 数字加减_java 用大写中文数字计算加减法
满意答案 qq40777000 2013.08.31 采纳率:59% 等级:12 已帮助:7910人 public class MapTest { public static void main ...
- Python练习:整数加减和
描述 编写程序计算如下数列的值: 1-2+3-4...966 其中,所有数字为整数,从1开始递增,奇数为正,偶数为负 输入格式 该题目没有输入. 输入输出示例 输入 输出 示例 1 无 111(仅 ...
- c语言任意两个整数相减_大整数加减运算的C语言实现
大整数加减运算的 C 语言实现 一 . 问题提出培训老师给出一个题目:用 C 语言实现一 个大整数计算器.初步要求支持大整数的加.减运算,例如 8888888888888+1112=888888889 ...
- java calendar 比较大小_关于Java日期加减,并且比较大小的方法
关于Java日期加减,并且比较大小的方法 一.首先Java日期加减我使用的是Calendar类,非常方便好用!,话不多说直接上代码 1.获取calendar对象,并不是直接new出来 Calendar ...
最新文章
- as 关联 android源码,android studio 2.x以上关联源码
- 使用component小程序
- JavaScript开发规范 0.01版
- css3加载图片淡入效果
- 0083-Nocomachns定理
- mysql如何开启远程链接_mysql怎么开启远程连接
- MSP430F5XXX中的ADC12使用
- Redis:03---Redis的启动与配置参数大全
- Linux系统中用户的管理
- ACM模式数组构建二叉树
- 关于信噪比-draft
- Codeforces.1051G.Distinctification(线段树合并 并查集)
- mysqldump怎么用 mysqldump没反应 mysqldump语法错误 mysqldump备份 mysql恢复 source命令 采用Navicat备份与mysqldump备份的区别...
- 剑三重制版怎么同步插件_剑网三重制版怎么导入插件 | 手游网游页游攻略大全...
- BusinessSkinForm VCL
- Spring Cloud Eureka源码分析之心跳续约及自我保护机制
- 华为云服务之计算服务
- 产品经理小技术:图片素材随手找,原型设计快又好
- 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
- 程序员每天每周每月每年应该做的事
热门文章
- OpenBSD配置Apache反向代理
- 利用MATLAB实现移动目标的TDOA/FDOA定位算法
- Intel GPU及NVIDIA GPU对视频编解码支持情况
- OpenCV学习记录(一):使用haar分类器进行人脸识别
- 大学生有必要学python吗_大学生学python到底有没有用?
- python深入与提高_Python深入01 特殊方法与多范式
- linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
- vm15+ubuntu+hadoop3.2,新手小白血泪经验
- js 按钮(checkbox)控制多个checkbox的选中或不选中问题
- python基础-装饰器