目录

1 问题描述

2 解决方案

 


1 问题描述

1/7 = 0.142857142... 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。

本题目要求即是:给出一个数字的循环小数表示法。

例如:
输入:
1,5
则输出:
0.2

输入:
1,7
则输出:
0.[142857]

输入:
7,6
则输出:
1.1[6]

用户输入的格式是:
整数,整数

每个整数范围均为:1~1000

程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。


2 解决方案

 import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
String[] arrayS = s.split(",");
BigDecimal a = new BigDecimal(arrayS[0]);
BigDecimal b = new BigDecimal(arrayS[1]);
a = a.divide(b, 200, BigDecimal.ROUND_UP );
String temp = "" + a;
String t = "" + Double.valueOf(arrayS[0]) / Double.valueOf(arrayS[1]);
if(t.length() < 18) {
System.out.println(t);
return;
}
String temp1 = temp.substring(2);
ArrayList<Character> list = new ArrayList<Character>();
for(int i = 0;i < temp1.length();i++) {
if(!list.contains(temp1.charAt(i)))
list.add(temp1.charAt(i));
else {
int start = list.indexOf(temp1.charAt(i));
int k = i, j = start;
for(;j < list.size() && k < 198;j++,k++) {
if(list.get(j) != temp1.charAt(k))
break;
}
if(j == list.size()) {
if((j - start == 1 && temp1.charAt(i) == '0')) {
list.add(temp1.charAt(i));
continue;
}
System.out.print(temp.substring(0, 2));
for(int p = 0;p < list.size();p++) {
if(p == start)
System.out.print("[");
System.out.print(list.get(p));
}
System.out.print("]");
return;
} else
list.add(temp1.charAt(i));
}
}
}
}

运行结果:

5,888
0.005[630] 2,19
0.[105263157894736842]

算法笔记_229:有理数的循环节(Java)的更多相关文章

  1. 算法笔记_029:约瑟夫斯问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...

  2. 算法笔记_051:荷兰国旗问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 现有n个红白蓝三种不同颜色的小球,乱序排列在一起,请通过两两交换任意两个球,使得从左至右的球依次为红球.白球.蓝球.这个问题之所以叫荷兰国旗,是因为 ...

  3. 算法笔记_177:历届试题 城市建设(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有 ...

  4. 算法笔记_135:格子取数问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 有n*n个格子,每个格子里有正数或者0,从最左上角往最右下角走,只能向下和向右走,一共走两次(即从左上角往右下角走两趟),把所有经过的格子里的数加起 ...

  5. 算法笔记_045:币值最大化问题(Java)

    目录 1 问题描述 2 解决方案 2.1 动态规划法   1 问题描述 给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同.请问如何选择硬币,使得在其原始位置互不相邻 ...

  6. 算法笔记_232:提取拼音首字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 在很多软件中,输入拼音的首写字母就可以快速定位到某个词条.比如,在铁路售票软件中,输入: “bj”就可以定位到“北京”.怎样在自己的软件中实现这个功 ...

  7. 算法笔记_231:网格中移动字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着.如图[1.jpg]所示. 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和 ...

  8. 算法笔记_226:填符号凑算式(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训 ...

  9. 算法笔记_223:打印回型嵌套(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 *********** * * * ******* * * * * * * * *** * * * * * * * * * * *** * * * ...

随机推荐

  1. U转串口驱动安装

    在装有Win7 32位系统的台式机上 先卸载旧驱动,再又一次安装. 对设备管理器里的U转串口设备从本地更新驱动.选择下图文件 系统弹出红色提示框(是否安装XXXX驱动),选择安装,随后该设备由无法启动 ...

  2. 行尸走肉第一季/全集The Walking Dead迅雷下载

    本季The Walking Dead 1 第一季(2010)看点:<行尸走肉>讲述了警察瑞克在一次执法行动中因中弹负伤而不省人事,当他从昏迷中苏醒后却惊讶地发现,这个世界已然天翻地覆.周遭 ...

  3. C++MFC编程笔记day05 文档类-单文档和多文档应用程序

    文档类 1 相关类    CDocument类-父类是CCmdTarget类,所以,文档类也能够处理菜单等               命令消息. 作用保存和管理数据.    注意事项:怎样解决断言错 ...

  4. Android性能检测工具——traceview

    之前的几篇文章中介绍了android中常用的一些工具,今天介绍的工具也是比较实用和方便的,它可以用量化的指标告诉我们哪个方法执行的时间最长,被调用的次数最多,有没有重复调用.下面我们就来看看它是怎么为 ...

  5. jpa命名规则 jpa使用sql语句 @Query

    关键字方法命名sql where字句 AndfindByNameAndPwdwhere name= ? and pwd =? OrfindByNameOrSexwhere name= ? or sex ...

  6. Spark迷思

    眼下在媒体上有非常大的关于Apache Spark框架的声音,渐渐的它成为了大数据领域的下一个大的东西. 证明这件事的最简单的方式就是看google的趋势图: 上图展示的过去两年Hadoop和Spar ...

  7. Pitch,Yaw,Roll的概念

    在航空中,pitch, yaw, roll下图所示. pitch是围绕X轴旋转,也叫做俯仰角. yaw是围绕Y轴旋转,也叫偏航角. roll是围绕Z轴旋转,也叫翻滚角.     在3D系统中,假设视点 ...

  8. 对于DQN的三大改进 - 这篇讲的好些

    可以看这篇文章: https://blog.csdn.net/u013236946/article/details/73161586 这篇也讲的不错: https://www.cnblogs.com/ ...

  9. [leetcode]Simplify Path @ Python

    原题地址:https://oj.leetcode.com/problems/simplify-path/ 题意: Given an absolute path for a file (Unix-sty ...

  10. Direct I/O,Synchronous I/O的概念

    Direct I/O概念: Direct I/O is a way to avoid entire caching layer in the kernel and send the I/O direc ...