循环小数
来源:互联网 发布:crossover mac 序列号 编辑:程序博客网 时间:2024/05/17 06:09
1/7 = 0.142857142... 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.[142857]
输入:
7,6
则输出:
1.1[6]
整数,整数
每个整数范围均为:1~1000
共4个测试用例
(2)
输入:
1,8
输出:
0.125
(3)
输入:
8,3
输出:
2.[6]
(3)
输入:
11,13
输出:
0.[846153]
(5)
输入:
2,19
输出:
0.[105263157894736842]
无限循环小数的说明:
在有理数范围内做除法时,最后总可以归结为整数除以整数的问题,假定除数是n,则除法中每步所产生的余数,总是小于n的,即为:0,1,2,...,n-1。当余数为零的时候,商就是整数或者有限小数。当余数始终不为零的时候,由于余数只能是1到n-1中的数,这样或迟或早总会发生余数相同的情况。当同一个余数再次出现时,下一个循环就开始了。如此循环往复所产生的小数,就是无限循环小数。
分析:
则此题核心思想既是判断小数部分是否开始循环,所以用到一个动态数组来判断继续增加的余数是否包含在已存在的动态数组里面,否不再,则添加进动态数组,若在,则说明小数开始循环,就进行截取工作。
import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);while (sc.hasNext()) {String s = sc.nextLine();String[] ss = s.split(",");int m = Integer.parseInt(ss[0]);int n = Integer.parseInt(ss[1]);StringBuffer result = new StringBuffer();result.append("");List<Integer> lis = new ArrayList<Integer>();//保存所有的商int temp=m/n;m = m % n;while (m != 0) {if (lis.contains(m)) {int i = 0;for (; i < result.length(); i++) {if (result.charAt(i) - '0' == m * 10 / n)break;}result.insert(i, "[");result.insert(result.length(), "]");break;} else {lis.add(m);result.append(m*10/n);}m=m*10%n;//得到余数}System.out.println(temp+"."+result);}}}
0 0
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数
- 循环小数问题
- 循环小数问题
- 无限循环小数
- JAVA array,map 转 json 字符串
- Ubiquitous Religions
- Linux下.ko, .o, .so, .a, .la文件
- 二维数组和交错数组、params、ref、out和面向对象
- QtableWidget的用法
- 循环小数
- svn使用手册
- X264编码h264
- javascript变量
- JAVA.SWT/JFace: SWT基本组件之按钮(Button)
- 基于OpenCV的程序脱离动态链接库运行方法
- 基于SIFT特征的全景图像拼接
- eclipse 安装插件 Aptana
- 区分全半角字符