import java.util.Arrays;

public class Solution {
public void div(String a, String b) { char[] chara = a.toCharArray();
char[] charb = b.toCharArray();
int[] numa = new int[a.length()];
int[] numb = new int[b.length()];
for (int i = 0; i < charb.length; i++) {
numb[i] = charb[i]-'0';
// System.out.print(""+numb[i]);
}
System.out.println("");
for (int i = 0; i < chara.length; i++) {
numa[i] = chara[i]-'0';
System.out.print(""+numa[i]);
}
System.out.println("");
int[] div = new int [1000];
int count = 0;
while(compare(numa,numb)>0){
numa= div(numa,numb);
addSelf(div,count); }
StringBuffer sb = new StringBuffer();
sb.append(""+div+" ");
for (int i = 0; i < numa.length; i++) {
sb.append(""+numa[i]);
}
System.out.println(""+sb);
} private void addSelf(int[] div, int count) {
if (div[div.length-1]!=9) {
div[div.length-1]++;
}else{
int i = div.length-1;
while (div[i]==9){
div[i] = 0;
i--;
} ;
if (div[i]==0) {
count++;
}else{
div[i] ++;
} } } private int[] div(int[] numa, int[] numb) {
for (int i = 0; i < numb.length; i++) {
int tmpa = numa[numa.length-i-1];
int tmpb = numb[numb.length-i-1];
int sub = tmpa-tmpb;
int count = numa.length-1;
if (sub>=0) {
numa[numa.length-i-1] = sub;
}else{
numa[numa.length-i-1] = sub+10;
count =numa.length- i-1-1;
while(numa[count]==0){
numa[count] =9;
count--; }
numa[count]--;
if (numa[0]==0) {
numa = Arrays.copyOfRange(numa,1, numa.length); }
} } for (int i = 0; i < numa.length; i++) {
// System.out.print(""+numa[i]);
}
//System.out.println("");
return numa;
} int compare(int[] numa, int[] numb) {
if (numa.length<numb.length) {
return -1;
}else if (numa.length>numb.length) {
return 1;
}else{
for (int i = 0; i < numb.length; i++) {
if (numa[i]>numb[i]) {
return 1;
}
if (numa[i]<numb[i]) {
return -1;
}
}
return 0;
} }
public static void main(String[] args) {
Solution solution = new Solution();
String a = "1234578901234567890123456789";
String b = "1";
solution.div(a, b);
}
}

大数的除法 不使用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. MySQL常用语句

    第1章 SQL结构化语言 1.什么是SQL? SQL,英文全称Structured Query Language,中文意思是结构化查询语言,它是一种关系型数据库中的数据进行定义和操作的语言方法,是大多 ...

  2. mysql GROUP_CONCAT+ GROUP BY + substring_index获取分组的前几名

    mysql方法来源于:http://www.cnblogs.com/jjcc/p/5896588.html ###在网上看到一篇,非常赞的方法### 比如说要获取班级的前3名,mysql就可以用GRO ...

  3. JavaACOFramework的各个类介绍(part1 : Ant类)

    public abstract class Ant extends Observable implements Runnable { public static int ANT_ID = 1; // ...

  4. dsp 28377在线升级 实例总结

    使用dsp品台28377d来实现在线升级的功能. 方案 : 升级程序  +  应用程序 升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳 ...

  5. a error of misunderstanding

    Last summer vacation, a classmate contacted with me and we finished a intelligent car project with i ...

  6. jQuery事件绑定.on()简要概述及应用

    原文地址:http://www.jquerycn.cn/a_5346     前几天看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的,最后看 ...

  7. JAVA 1.1

    1. JASE : J2SE 这个就是我们现在在学的东西,他是一切Java的核心基础 JAME :J2ME : 他是Java的一个微型版,主要用来做移动开发 JAEE :J2EE Java企业版本,主 ...

  8. javascript中的窗口和框架

    框架: 在网络上我们可以看到很多WEB应用程序都是使用框架(frame)来分隔浏览器窗口的,就想一块块玻璃隔板把窗口分隔成好几个小窗口,并且可以在不同的小窗口中加载显示不同的页面,这样在我们看来好像是 ...

  9. 用CSS3和Canvas来画网格

    我们经常使用一些excel表格来处理数据,在html中,我们可以用table来制成表格.今天来看一下一些不同的方法. 方法一:使用CSS3的background的linear-gradient属性 l ...

  10. JavaScript中的编码函数

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...