• 循环节长度 蓝桥杯


    循环节长度
    
    两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
    比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位。
    下面的方法,可以求出循环节的长度。
    
    请仔细阅读代码,并填写划线部分缺少的代码。
    
        public static int f(int n, int m)
        {
            n = n % m;    
            Vector v = new Vector();
            
            for(;;)
            {
                v.add(n);     
                n *= 10;
                n = n % m;
                if(n==0) return 0;
                if(v.indexOf(n)>=0)  _________________________________ ;  //填空
            }
        }
    
    注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。

    观察下行代码可以察觉这个for循环应该是将n%m的结果放入容器里面,是否当出现某个循环时就是答案,模拟一下就知道了。

    v.add(n);

    模拟18÷7=2.5714285714285714285714285714286......循环节是6

    add.indexOf 余数
    0 4
    1 5
    2 1
    3 3
    4 2
    5 6
    6 4
    7 5
    8 1
    9 3

    上面表格是按照循环过程n=n%m,vector.add(n),n*=10,n=n%m......不断迭代得出来的余数,发现会出现循环体,出现循环的时候会出现重复的元素,所以每次判断当前余数是否出现过,即通过indexOf这个方法测定,当返回值为-1时说明这个余数没有出现过,否则返回其在容器里面的索引值;所以,当indexOf>=0时,输出容器大小即可。

    一组测试数据:23÷17=1.3529411764705882352941176470588......,循环节是16

    答案:return v.size()
  • 相关阅读:
    正则表达式中的贪婪模式与非贪婪模式详解
    关于Python中正则表达式的反斜杠问题
    每日思考记录(1)
    软件设计——2018年上半年选择题重要知识点
    统一过程UP
    软件设计复习7
    软件设计复习6
    软件设计复习5
    软件设计复习4
    软件设计复习3
  • 原文地址:https://www.cnblogs.com/chiweiming/p/10578832.html
Copyright © 2020-2023  润新知