package com.zh.test;
/* 有理循环小数
1/7 = 0.142857142... 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.[142857]
输入:
7,6
则输出:
1.1[6]
用户输入的格式是:
整数,整数
每个整数范围均为:1~1000
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。
*/
import java.util.ArrayList;
public class Test11 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
f(3,9);
}
public static void f(int m,int n){
ArrayList<Integer> list=new ArrayList<Integer>();//记录余数
StringBuffer buffer=new StringBuffer();//添加商 也就是结果
buffer.append(m/n+".");
m = m%n; //得到余数
while(m != 0){ //余数为0
if(list.contains(m)){
System.out.println("ddd");
int i=0;
for(;i<buffer.length();i++){
if(buffer.charAt(i) - '0' == m*10/n){
break;
}
}
buffer.insert(i, '[');
buffer.insert(buffer.length(), ']');
break;
}else{
list.add(m); //添加余数
buffer.append(m*10/n); //添加商
}
m = m*10% n;
}
System.out.println(buffer.toString());
}
}