Java实现有理数的循环节
2023-09-14 08:58:12 时间
1/7 = 0.142857142… 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.[142857]
输入:
7,6
则输出:
1.1[6]
用户输入的格式是:
整数,整数
每个整数范围均为:1~1000
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。
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));
}
}
}
}
相关文章
- 【Java】java扩展机制SPI 实现
- Java语法基础(四)----循环结构语句
- 数据结构Java实现04----循环链表、仿真链表
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- Java实现 LeetCode 739 每日温度(暴力循环)
- Java实现 LeetCode 641 设计循环双端队列(暴力)
- Java实现 LeetCode 641 设计循环双端队列(暴力)
- Java实现 LeetCode 622 设计循环队列(暴力大法)
- Java实现 LeetCode 486 预测赢家
- Java实现 LeetCode 457 环形数组循环
- Java实现 LeetCode 457 环形数组循环
- Java实现 LeetCode 457 环形数组循环
- Java实现 Leetcode 169 求众数
- java实现第六届蓝桥杯循环节长度
- java实现第六届蓝桥杯循环节长度
- Java实现有理数的循环节
- Java实现 蓝桥杯VIP 算法训练 快速排序
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- 理解java的 多态
- Java两种方法实现循环报数
- How to improve Java's I/O performance( 提升 java i/o 性能)
- 【java】Java 包(package)
- Java中的静态变量、静态方法和Static关键字介绍与用法
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
- (十一)java循环结构
- Java 异常解决之java.lang.IllegalArgumentException: Comparison method violates its general contract!
- JAVA语言之Java 中不同的并行实现的性能比较