算法题练习系列之(十):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(); }}
- 算法题练习系列之(十):A除以B
- 算法题练习系列之(九):部分A+B
- 算法题:A除以B
- PAT练习-A除以B
- 算法题练习系列之(四):A+B和C
- 算法题练习系列之(十五): D进制的A+B
- 算法题练习系列之(二十): 打印沙漏
- 团体程序设计天梯赛-练习集 -- L2-018. 多项式A除以B(多项式除法--模拟)
- PAT编程题:A除以B (20)
- PAT乙级题1017.A除以B
- (乙)1017. A除以B
- PAT(乙级)1017. A除以B
- PAT 1017. A除以B (20)()
- 1017. A除以B (20)(复)
- PAT1017. A除以B
- 1017 A除以B
- 1017. A除以B
- A除以B
- 十六、迭代器模式——设计模式学习笔记
- 最短路径—Dijkstra算法和Floyd算法
- 朴素贝叶斯分类
- java集合(1)
- 机器学习笔记-第一章 单变量线性回归
- 算法题练习系列之(十):A除以B
- PAT乙级 1048. 数字加密(20)
- QT中窗体之间传值--signals&slots
- Mac 安装java 环境变量 和android环境遇到的问题 JRE System Library(unbound)系统JRE未绑定解决方案
- 理解Handler消息机制
- MyEclipse关闭某类或某个具体文件的验证的方法
- Okhttp之RouteSelector简单解析
- 动态规划总结
- 如何解决error C4996: 'fopen'的问题