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实现有理数的循环节的更多相关文章

  1. 算法笔记_229:有理数的循环节(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 1/7 = 0.142857142... 是个无限循环小数.任何有理数都可以表示为无限循环小数的形式. 本题目要求即是:给出一个数字的循环小数表示法 ...

  2. hdu 4291 A Short problem(矩阵+取模循环节)

    A Short problem                                                          Time Limit: 2000/1000 MS (J ...

  3. hdu1005 Number Sequence(寻找循环节)

    主题链接: pid=1005">huangjing 题意: 就是给了一个公式,然后求出第n项是多少... 思路: 题目中n的范围实在是太大,所以肯定直接递推肯定会超时,所以想到的是暴力 ...

  4. HDU 4291 A Short problem(矩阵+循环节)

    A Short problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. hdu3746 Cyclic Nacklace【nxt数组应用】【最小循环节】

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. 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 ...

  7. kmp的next数组的运用(求字符串的最小循环节)

    hdu3746 Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  8. HDU 5690——All X——————【快速幂 | 循环节】

    All X Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  9. HDU1358 KMP(最短循环节)

    Period Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. 在本地运行Kubernetes的3种主流方式

    作者简介 Chris Tozzi,曾担任记者和Linux管理员.对开源技术.敏捷基础架构以及网络问题兴趣浓厚.目前担任高级内容编辑,并且是Fixate IO的DevOps分析师. 原文链接: http ...

  2. Two Operations Gym - 102263M 优先队列水题

    Two Operations Gym - 102263M Ayoub has a string SS consists of only lower case Latin letters, and he ...

  3. 一个小例子学习makefile

    前言 makefile推荐资料为陈皓的跟我一起写makefile,需要pdf资源的可以私我 正文 目录结构 ---include ------student.h ---src ------studen ...

  4. Django之Middleware中间件方法使用

    自定义中间件五个方法(部分方法)实例 自定义中间件项目: 模板Templates login.html {% load static %} <!DOCTYPE html> <html ...

  5. 02 Redis数据结构基础

    一.客户端命令行参数 1.-x 从标准输入读取一个参数,等价于set k v [root@localhost etc]# echo -en 'v1'|redis-cli -a foobared -x ...

  6. React Native 架构演进

    写在前面 上一篇(React Native 架构一览)从设计.线程模型等方面介绍了 React Native 的现有架构,本篇将分析这种架构的局限性,以及 React Native 正在进行的架构升级 ...

  7. blazor wasm访问非本地的restful service

    准备工作 blazor wasm正式版发布了!在尝试使用的过程中,发现几个小坑,跟大家分享一下,希望有所帮助. 我是通过keycloak来保护blazor和service的,如何保护service请参 ...

  8. hrb

  9. 控制层技术:Servlet+reflection、Struts2、Spring MVC三者之间的比较学习

    Servlet Struts2 Spring MVC 处理用户提交的数据 基于MVC设计模式的Web应用程序 是一个框架 是MVC框架 导入servlet包,配置web.xml文件 web.xml & ...

  10. 解决WordPress网站被利用xmlrpc.php文件攻击问题

    原因在于使用的WORDPRESS程序默认xmlrpc.php开启,而被用来DDOS攻击导致占用资源过高. 如何解决这个问题呢? 是屏蔽 XML-RPC (pingback) 的功能. add_filt ...