Java实现有理数的循环节
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实现有理数的循环节的更多相关文章
- 算法笔记_229:有理数的循环节(Java)
目录 1 问题描述 2 解决方案 1 问题描述 1/7 = 0.142857142... 是个无限循环小数.任何有理数都可以表示为无限循环小数的形式. 本题目要求即是:给出一个数字的循环小数表示法 ...
- hdu 4291 A Short problem(矩阵+取模循环节)
A Short problem Time Limit: 2000/1000 MS (J ...
- hdu1005 Number Sequence(寻找循环节)
主题链接: pid=1005">huangjing 题意: 就是给了一个公式,然后求出第n项是多少... 思路: 题目中n的范围实在是太大,所以肯定直接递推肯定会超时,所以想到的是暴力 ...
- HDU 4291 A Short problem(矩阵+循环节)
A Short problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- hdu3746 Cyclic Nacklace【nxt数组应用】【最小循环节】
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 3746 - Cyclic Nacklace & HDU 1358 - Period - [KMP求最小循环节]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- kmp的next数组的运用(求字符串的最小循环节)
hdu3746 Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- HDU 5690——All X——————【快速幂 | 循环节】
All X Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- HDU1358 KMP(最短循环节)
Period Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
随机推荐
- DevOps vs. Agile:它们有什么共同点?
DevOps与Agile有很多不同,但它们之间仍可发现很多共同点,这篇文章为读者揭晓. DevOps和Agile之间有着明显的关系.Agile是方法论,Scrum是框架,并DevOps随着看板也落在了 ...
- neo4j企业版集群搭建
一.HA高可用集群搭建 版本采用的是neo4j-enterprise-3.5.3-unix.tar.gz 1.1.集群ip规划 192.168.56.10 neo4j-node1 192.168.56 ...
- Linux -- 在文件中添加信息的方法(转)
转自:https://www.cnblogs.com/ZGreMount/p/7645542.html 创建test 文件: touch test.txt 方法一:echo 命令法: echo &qu ...
- Linux基本命令(文件基操)
1. 查询目录内容:ls [选项] [文件或者目录] -a 显示所有文件,包括隐藏文件 -l 显示详细信息 -d 查看目录属性 -h 人性化显示文件大小 -i 显示节点ID,inode ls -ld ...
- 什么是virtual string tree?
Virtual stringtree(以后简称VST)是一个提供源码的免费的第三方插件,支持DELPHI和C++builder,可在http://www.soft-gems.net/下载到最新的版本. ...
- 手机端页面访问PC页面自动跳手机端代码
<script> var mobileAgent = new Array("iphone", "ipod", "ipad", & ...
- Oracle 中同义词使用
一.数据库对象: 模式对象: 数据库对象是逻辑结构的集合,最基本的数据库对象是表; 其他对象包括:create增.drop删.改alter 同义词.序列.视图.索引 1.同义词: ①. 现有对象的一个 ...
- 获取MP4媒体文件时长
由于之前上传MP4文件没有保存视频时长,现在有需要,所以只好写代码读取时长.找了几个发现是 c/c++ 实现,或者是借助 FFmpeg 实现. 一个偶然在 GitHub 上面发现一个 c 文件,由于获 ...
- C#中方法的静态和非静态
在代码中,给方法加上static就成为了一个静态的方法,然而静态方法是隶属于类的,由类名点出来! 不给方法加static就是一个非静态方法,非静态的方法,是隶属于对象的,需要把类实例化之后,用对象名去 ...
- mysql排序,同样的语句 查询结果不一样的问题
一个项目,某段数据顺序出现异常导致运行异常.早期没有问题,用开发版本也没有问题,同样的查询排序语句在mysql客户端执行也没有问题. 这个排序不一致问题,这里记录下. 如下查询语句,根据‘order’ ...