输入两个数M,N(均小于100),M/N可能为有限小数,也可能为无限循环小数,如:
1/4=0.25
1/7=0.142857142857142857......
如果M/N为有限小数,则输出其所有的小数位,如果M/N为无限循环小数,则输出它小数点后面的一个循环节
例如
输入
1 4
输出
25
输入
2 7
输出
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();
}
}