题目如下:
循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,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) _________________________________ ; //填空
}
}
注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。
对此的理解如下:
public class Length {
public static int f(int n, int m) {
n = n % m;
Vector<Integer> v = new Vector<Integer>();
for(; ;) {
v.add(n);
n *= 10;
n = n % m;
if(n == 0) {
return 0;
}
if(v.indexOf(n) >= 0) {
return v.size();
}
}
}
}
主函数:
public static void main(String[] args) {
int a = Length.f(11, 13);
System.out.println(a);
}
vector其实和数组一样,所有元素都保存在从数组下标为0的地方开始,连续保存,只是数组下标不能越界,而vector下标可动态变化。
vector.indexOf(int n);
看能否在vector数组中找到n的值,若能找到则返回0,若找不到则返回-1;
手工过程解释如下代码:
假设n为11, m为13
对这个例子的理解如上,如果有不清楚的地方,还望指正,共同讨论。