两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。

题目描述:两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。

比如,11/13=6=>0.846153846153... 其循环节为846153 共有6位。

下面的方法,可以求出循环节的长度。

java 复制代码
import java.util.Vector;
public class test3 {
    public static void main(String[] args) {
        System.out.println(f(11,13));
    }
    public static int f(int n,int m){
        n=n%m;
        Vector v=new Vector();
        for(;;){//无限循环
            v.add(n);//将每次的余数添加到数组中
            n*=10;//当前余数扩大10倍,求得下一位余数
            n=n%m;
            if(n==0)
                return 0;
                //如果当前的余数不是第一次出现,那么就说明已经循环节出现了
            if(v.indexOf(n)>=0)
            //为了避免循环部分是相同的数字的情况,因此需要减去第一次出现的位置
                return v.size()-v.indexOf(n);

            }
        }
    }

输出:

java 复制代码
6
相关推荐
普通人65 小时前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节
wuminyu5 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
电商API_180079052476 小时前
反向海淘多币种结算:汇率该在哪个时点被冻结
java·开发语言·数据库·跨境电商·1688 api
Nil2086 小时前
leetcode 5最长回文子串
算法·leetcode·职场和发展
xxwl5856 小时前
区域赛分类题解
c++·笔记·学习·算法
m0_674571976 小时前
力扣 hot 100 python
python·算法·leetcode
开开心心就好6 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
Want5956 小时前
Python炫酷烟花①
开发语言·python
青少儿编程课堂6 小时前
蓝桥杯+全国青少年信息素养大赛+电子学会PythonC/C++考级:最长公共子序列LCS解析
c++·python·算法·bfs·信息学竞赛
Pniubi7 小时前
模拟一个充值送token怎么保证幂等?一致性?原子性?
java