蓝桥杯 java b组2015年第六届 循环节长度

 一、题目

两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,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)  _________________________________ ;  //填空
        }
    }

 二、代码分析

package Lan2015;

public class XunHuanJieChangDu {
    public static void main(String[] args) {
        /*两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
        比如,11/13=6=>0.846153 846153.....  其循环节为[846153] 共有6位。
        下面的方法,可以求出循环节的长度。
        请仔细阅读代码,并填写划线部分缺少的代码
            public static int f(int n, int m)
    {
        n = n % m;    //用来得到余数
        Vector v = new Vector();//创建一个Vector数组
        for(;;) // 无限的循环
        {
            v.add(n);//给v里加了个数,即刚才的余数
            n *= 10;//将余数扩大10倍
            n = n % m;//再除以m取余数,
            if(n==0) return 0;//能整除的情况
            if(v.indexOf(n)>=0) //查找数组中n元素的索引,并返回索引值
             _________________________________ ;  //填空
        }
    }*/
        // 1/3= 0.3333
        //1%3==1
        //进入循环
        //v{1}
        //n = n * 10 = 1 * 10 = 10
        //n = n % m = 10 % 3= 1
        //n != 0
        //v.indexOf(1) = 0,return v.size() - v.indexOf(n) = 1 -0 = 1

        //7/18 = 0.388888
        //7%18=7
        //n=7
        //for
        //v{7}
        //n=70
        //n=70%18=16
        //for
        //v{7,16}
        //n=160
        //160%18=16
        //v.indexOf(16)=1>0,return 2-1=1
    }
}

3.反思

        理解每一行代码的意思,然后找一些值代入计算一下,要找一些特殊的值

 

你可能感兴趣的:(java,开发语言)