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 ...
随机推荐
- 新鲜出炉高仿网易云音乐 APP
我的引语 晚上好,我是吴小龙同学,我的公众号「一分钟GitHub」会推荐 GitHub 上好玩的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注我. 项目中成长是最快的,如何成长,就 ...
- Centos最小安装
网络配置 虚拟机安装使用的NAT模式 #enoXXX 为自己的网卡名称, 使用ip addr 可以查看 将/etc/sysconfig/network-scripts/ifcfg-enoXXX中的ON ...
- tp5.1的事务操作
普通的事务操作很简单,最简单的方式是使用 transaction 方法操作数据库事务, 当闭包中的代码发生异常会自动回滚, 例如: Db::transaction(function () { Db:: ...
- Spring学习笔记(三):面向切面的Spring
Spring之面向切面编程 一.理解何为面向切面编程 对于这个的理解,我觉得Spring实战中的例子讲得很明白: 假设我现在是一个小区用户,每个月小区都要收电费,这时候就会来人查看电表,算出来这个月电 ...
- java新学者(二)
一.构造方法的特点 创建新的对象 A a =new A (); 二.抽象类和抽象方法的特点是什么? .抽象类使用abstract修饰: .抽象类不能实例化,即不能使用new关键字来实例化对象: .含有 ...
- vue项目中使用bpmn-流程图json属性转xml(七篇更新完成)
内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...
- Asp.net MVC验证那些事(1)-- 介绍和验证规则使用----[转]--[并修改了部分内容]
Asp.net MVC验证那些事(1)-- 介绍和验证规则使用 -----原文地址链接 数据的有效性验证,是程序开发中必不可少的环节.这篇文章,我们将用一个实例来说明如何在MVC中使用Validati ...
- 基于Netty包中的Recycler实现的对象池技术详解
一.业务背景 当项目中涉及到频繁的对象的创建和回收的时候,就会出现频繁GC的情况,这时就出现了池化的技术来实现对象的循环使用从而避免对象的频繁回收,Netty包下的Recycler就实现了这一功能.当 ...
- 【Spring】Spring AOP详解(转载)
一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...
- mysql 的大文本存储TEXT & BLOB
TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能 ...