展开全部

你这个道题很有意思,应该是怎么使用算法吧:

减法从各位开始计算,需要判断减数和被减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超大整数的加法如何改成减法相关推荐

  1. java 整数加减_Java计算长整数加减(字符串表示)

    1 /** 2 * Created by areful on 2019/11/133 */ 4 public classCalcStringNumber {5 private static final ...

  2. java时间加减_java时间加减

    展开全部 1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...

  3. java 时间加减_java如何实现当前时间加减30分钟的方法

    java如何实现当前时间加减30分钟的方法 发布时间:2020-08-17 09:41:34 来源:亿速云 阅读:280 作者:小新 这篇文章主要介绍java如何实现当前时间加减30分钟的方法,文中介 ...

  4. java long加减_java 日期加减

    Date d=new Date(); SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); System.out.prin ...

  5. java 时间加减_Java中时间加减的比较

    public class TestDate{ public static void main(String[] args){ try{ Date date=new Date(); DateFormat ...

  6. java 数字加减_java 用大写中文数字计算加减法

    满意答案 qq40777000 2013.08.31 采纳率:59%    等级:12 已帮助:7910人 public class MapTest { public static void main ...

  7. Python练习:整数加减和

    描述 编写程序计算如下数列的值: 1-2+3-4...966 其中,所有数字为整数,从1开始递增,奇数为正,偶数为负 输入格式 该题目没有输入. 输入输出示例   输入 输出 示例 1 无 111(仅 ...

  8. c语言任意两个整数相减_大整数加减运算的C语言实现

    大整数加减运算的 C 语言实现 一 . 问题提出培训老师给出一个题目:用 C 语言实现一 个大整数计算器.初步要求支持大整数的加.减运算,例如 8888888888888+1112=888888889 ...

  9. java calendar 比较大小_关于Java日期加减,并且比较大小的方法

    关于Java日期加减,并且比较大小的方法 一.首先Java日期加减我使用的是Calendar类,非常方便好用!,话不多说直接上代码 1.获取calendar对象,并不是直接new出来 Calendar ...

最新文章

  1. as 关联 android源码,android studio 2.x以上关联源码
  2. 使用component小程序
  3. JavaScript开发规范 0.01版
  4. css3加载图片淡入效果
  5. 0083-Nocomachns定理
  6. mysql如何开启远程链接_mysql怎么开启远程连接
  7. MSP430F5XXX中的ADC12使用
  8. Redis:03---Redis的启动与配置参数大全
  9. Linux系统中用户的管理
  10. ACM模式数组构建二叉树
  11. 关于信噪比-draft
  12. Codeforces.1051G.Distinctification(线段树合并 并查集)
  13. mysqldump怎么用 mysqldump没反应 mysqldump语法错误 mysqldump备份 mysql恢复 source命令 采用Navicat备份与mysqldump备份的区别...
  14. 剑三重制版怎么同步插件_剑网三重制版怎么导入插件 | 手游网游页游攻略大全...
  15. BusinessSkinForm VCL
  16. Spring Cloud Eureka源码分析之心跳续约及自我保护机制
  17. 华为云服务之计算服务
  18. 产品经理小技术:图片素材随手找,原型设计快又好
  19. 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
  20. 程序员每天每周每月每年应该做的事

热门文章

  1. OpenBSD配置Apache反向代理
  2. 利用MATLAB实现移动目标的TDOA/FDOA定位算法
  3. Intel GPU及NVIDIA GPU对视频编解码支持情况
  4. OpenCV学习记录(一):使用haar分类器进行人脸识别
  5. 大学生有必要学python吗_大学生学python到底有没有用?
  6. python深入与提高_Python深入01 特殊方法与多范式
  7. linux打包运行python文件_Linux下安装pyinstaller用于将py文件打包生成一个可执行文件...
  8. vm15+ubuntu+hadoop3.2,新手小白血泪经验
  9. js 按钮(checkbox)控制多个checkbox的选中或不选中问题
  10. python基础-装饰器