无限循环小数的循环节

来源:互联网 发布:java开源运维监控平台 编辑:程序博客网 时间:2024/04/28 23:41
输入两个数M,N(均小于100),M/N可能为有限小数,也可能为无限循环小数,如:
1/4=0.25
1/7=0.142857142857142857......
如果M/N为有限小数,则输出其所有的小数位,如果M/N为无限循环小数,则输出它小数点后面的一个循环节
例如
输入
1 4
输出
25

输入
2 7
输出

285714


import java.util.ArrayList;
public class Mid713 {
public static void main(String[] args) {
    int m=1;
    int n=6;
    System.out.print(f(m,n));
    }
 static String f(int m,int n){
ArrayList<Integer> list=new ArrayList<Integer>();
StringBuffer sb=new StringBuffer();
 m=m%n;
while(m!=0){

if(list.contains(m)){
int i=0;
for(;i<sb.length();i++){
if(sb.charAt(i)-'0'==m*10/n){//记录循环节开始的位置
break;
}
}
sb.delete(0, i);
break;
 
}else{
list.add(m);//转入余数
sb.append(m*10/n);//装入商的值
}
m=m*10%n; 
}
return sb.toString();
 }
}

0 0
原创粉丝点击