无限循环小数的循环节

输入两个数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();
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值