1. import java.util.Arrays;
  2.  
  3. public class Solution {
  4. public void div(String a, String b) {
  5.  
  6. char[] chara = a.toCharArray();
  7. char[] charb = b.toCharArray();
  8. int[] numa = new int[a.length()];
  9. int[] numb = new int[b.length()];
  10. for (int i = 0; i < charb.length; i++) {
  11. numb[i] = charb[i]-'0';
  12. // System.out.print(""+numb[i]);
  13. }
  14. System.out.println("");
  15. for (int i = 0; i < chara.length; i++) {
  16. numa[i] = chara[i]-'0';
  17. System.out.print(""+numa[i]);
  18. }
  19. System.out.println("");
  20. int[] div = new int [1000];
  21. int count = 0;
  22. while(compare(numa,numb)>0){
  23. numa= div(numa,numb);
  24. addSelf(div,count);
  25.  
  26. }
  27. StringBuffer sb = new StringBuffer();
  28. sb.append(""+div+" ");
  29. for (int i = 0; i < numa.length; i++) {
  30. sb.append(""+numa[i]);
  31. }
  32. System.out.println(""+sb);
  33. }
  34.  
  35. private void addSelf(int[] div, int count) {
  36. if (div[div.length-1]!=9) {
  37. div[div.length-1]++;
  38. }else{
  39. int i = div.length-1;
  40. while (div[i]==9){
  41. div[i] = 0;
  42. i--;
  43. } ;
  44. if (div[i]==0) {
  45. count++;
  46. }else{
  47. div[i] ++;
  48. }
  49.  
  50. }
  51.  
  52. }
  53.  
  54. private int[] div(int[] numa, int[] numb) {
  55. for (int i = 0; i < numb.length; i++) {
  56. int tmpa = numa[numa.length-i-1];
  57. int tmpb = numb[numb.length-i-1];
  58. int sub = tmpa-tmpb;
  59. int count = numa.length-1;
  60. if (sub>=0) {
  61. numa[numa.length-i-1] = sub;
  62. }else{
  63. numa[numa.length-i-1] = sub+10;
  64. count =numa.length- i-1-1;
  65. while(numa[count]==0){
  66. numa[count] =9;
  67. count--;
  68.  
  69. }
  70. numa[count]--;
  71. if (numa[0]==0) {
  72. numa = Arrays.copyOfRange(numa,1, numa.length);
  73.  
  74. }
  75. }
  76.  
  77. }
  78.  
  79. for (int i = 0; i < numa.length; i++) {
  80. // System.out.print(""+numa[i]);
  81. }
  82. //System.out.println("");
  83. return numa;
  84. }
  85.  
  86. int compare(int[] numa, int[] numb) {
  87. if (numa.length<numb.length) {
  88. return -1;
  89. }else if (numa.length>numb.length) {
  90. return 1;
  91. }else{
  92. for (int i = 0; i < numb.length; i++) {
  93. if (numa[i]>numb[i]) {
  94. return 1;
  95. }
  96. if (numa[i]<numb[i]) {
  97. return -1;
  98. }
  99. }
  100. return 0;
  101. }
  102.  
  103. }
  104. public static void main(String[] args) {
  105. Solution solution = new Solution();
  106. String a = "1234578901234567890123456789";
  107. String b = "1";
  108. solution.div(a, b);
  109. }
  110. }

大数的除法 不使用BigInteger Java实现的更多相关文章

  1. 【Java】-BigInteger大数类的使用【超强Java大数模板 总结】

    Scanner cin = new Scanner(new BufferedInputStream(System.in)); 这样定义Scanner类的对象读入数据可能会快一些! 参考这个博客继续补充 ...

  2. 1030 大数进制转换(51Nod + JAVA)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1030 题目: 代码实现如下: import java.mat ...

  3. HDU 1134 卡特兰数 大数乘法除法

    Problem Description This is a small but ancient game. You are supposed to write down the numbers 1, ...

  4. java精确除法计算,四舍五入 Java问题通用解决代码

    主要用java.math.BigDecimal工具类实现,想要了解BigDecimal类可以看java api   正式版:        public static Double divide() ...

  5. Java大数处理类:BigInteger类和BigDecimal类

    当我们要处理非常大的数据时,平常用的数据类型已不足以表示,在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,这两个类在理论上只要计算机内存足够大就能够表示无线 ...

  6. 大数运算之 Java BigInteger 的基本用法

    大数运算之 Java BigInteger 的基本用法 在程序设计竞赛中会遇到高精度运算的问题,C++没有高精度运算,只能手动模拟人工运算,手动实现高精度,而 java.math 包中的 BigInt ...

  7. Java实现大数相加、相乘(不使用BigInteger)

    大数相加: package algorithm; //使用BigInteger类验证 import java.math.BigInteger; public class BigAdd { public ...

  8. JAVA大数处理(BigInteger,BigDecimal)

    原文链接 Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类. 这两个类都在java.math.*包中,因此每次必须在开头处引用该包. Ⅰ基本函数: 1.valu ...

  9. java大数相加

    import java.math.BigInteger; import java.util.Scanner; public class Bignum{    public static void ma ...

随机推荐

  1. 2016年12月31日 星期六 --出埃及记 Exodus 21:26

    2016年12月31日 星期六 --出埃及记 Exodus 21:26 "If a man hits a manservant or maidservant in the eye and d ...

  2. NSValue 类的使用

    NSValue对象是用来存储一个C或者Objective-C数据的简单容器.它可以保存任意类型的数据int,float,char等,也可以是指pointers, structures, and obj ...

  3. 怎样处理“error C2220: warning treated as error - no object file generated”错误

    最近用VS2010 编译ceflib开源库是出现"怎样处理"error C2220: warning treated as error - no object file gener ...

  4. 20-ES6(3)class基本语法

    # Class基本语法 关于es6的class简介: ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6的class可以 ...

  5. acvity和fragment通过广播联系

    今天我遇到一个问题,就是在activity中需要动态改变fragment中的控件,以前看到过可以在activity中得到fragment实例,然后修改控件: 今天实验了一个新的办法,通过新的办法,就是 ...

  6. 代码性能优化——task

    var t1 = Task.Factory.StartNew(delegate { //代码(查接口.数据库) }); 缺点: 不能使用request( HttpContext.Current.Req ...

  7. 安装和配置SVN服务器Subversion、客户端TortoiseSVN和Visual Studio插件AnkhSvn

    1.下载并安装服务器端Subversion下载地址:http://subversion.apache.org当前最新版本为1.8.10,默认安装目录为C:\Program Files\Subversi ...

  8. pyqt4学习笔记

    信号与槽机制 信号与槽机制作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制.其中,信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数.例如,要将一个窗口中的变化情况通知给另一个 ...

  9. 易货beta版本测试报告

    测试 对于服务器端我们是进行了单元测试 对于客户端我们使用的是在线的云测工具对app进行了包括安装,启动,具体功能以及ui方面的测试. 另外,对于客户端,我们还进行了对细节功能的人工测试 功能需求编号 ...

  10. iOS - Localizable 国际化

    1.国际化 开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言,系统会根据当前设备的语言环境来识别 App 中使用中文还是英文. 2.应用内容国际化 1.新建一个名为 ...