算法题练习系列之(十):A除以B

来源:互联网 发布:java web项目搭建教程 编辑:程序博客网 时间:2024/05/16 17:17

--------------------------------------------------------------------------------------------------------------------------------------------------------

时间限制:1秒  空间限制:32768K  代码长度限制 100 KB

--------------------------------------------------------------------------------------------------------------------------------------------------------

题目描述

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立
输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。
输出描述:
在1行中依次输出Q和R,中间以1空格分隔。
输入例子:
123456789050987654321 7
输出例子:
17636684150141093474 3

--------------------------------------------------------------------------------------------------------------------------------------------------------

实现思路:

(1).这题其实是一个大数相除的简单版,除数限定为一位的整数;

(2).将被除数A转换为字符数组,从左至右,逐一取数组中的元素与B进行相除和取余操作,此时取出的元素需要转换为int型;一直循环到数组最后一个元素为止;

(3).进入下一次循环时,改变余数,下一次的被除数为余数*10+数组元素;

(4).上面描述的是基本的算法操作,在java里,有现成的封装好的类用于专门处理这类大数算数操作的,也可以直接使用。

--------------------------------------------------------------------------------------------------------------------------------------------------------

package com.biyao.algorithm.niuke.a1;import java.util.Scanner;public class Main_a1_007_2 {        public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        while(scan.hasNext()){            String bNum1 = scan.next();            int bNum2 = scan.nextInt();            System.out.println(devide(bNum1,bNum2));        }    }        public static String devide(String num1,int num2){        char[] numCharArr = num1.toCharArray();        int i = 0;        int shang = 0;        int yushu = 0;        int chushu = 0;        String res = "";        while(i < numCharArr.length){            chushu = yushu*10 + (int)(numCharArr[i]-48);            if(chushu < num2){                shang = 0;            }else{                shang = chushu/num2;            }            yushu = chushu%num2;            res = res + shang;            i++;        }        if(res.startsWith("0")){            res = res.substring(res.indexOf("0")+1);        }        return res + " " + yushu;    }}

package com.biyao.algorithm.niuke.a1;import java.math.BigInteger;import java.util.Scanner;public class Main_a1_007 {        public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        while(scan.hasNext()){            String bNum1 = scan.next();            String bNum2 = scan.next();            System.out.println(devide(bNum1,bNum2));        }    }        public static String devide(String num1,String num2){        BigInteger bNum1=new BigInteger(num1);        BigInteger bNum2=new BigInteger(num2);        BigInteger result=bNum1.divide(bNum2);//除        BigInteger yuShu=bNum1.remainder(bNum2);//取余        return result.toString() + " " + yuShu.toString();    }}



原创粉丝点击