題目
循環(huán)節(jié)長(zhǎng)度
兩個(gè)整數(shù)做除法,有時(shí)會(huì)產(chǎn)生循環(huán)小數(shù),其循環(huán)部分稱為:循環(huán)節(jié)。
比如,11/13=6=>0.846153846153..... 其循環(huán)節(jié)為[846153] 共有6位。
下面的方法,可以求出循環(huán)節(jié)的長(zhǎng)度。
請(qǐng)仔細(xì)閱讀代碼,并填寫劃線部分缺少的代碼。
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) _________________________________ ; //填空
}
}
注意,只能填寫缺少的部分,不要重復(fù)抄寫已有代碼。不要填寫任何多余的文字。
答案
return v.size()
分析
通過分析代碼,可知for循環(huán)中,每次是將n/m的余數(shù)加入到vector中,目的是下一次for循環(huán)可以利用余數(shù)*10/m得到新的余數(shù),如此往復(fù),直到vector中出現(xiàn)了所求余數(shù),說明出現(xiàn)循環(huán)小數(shù)。
其實(shí)原理和把每次n/m所得商數(shù)加入到vector中一個(gè)道理,比較簡(jiǎn)單的一道題目。
代碼
完整代碼如下:
import java.util.Vector;
public class Four {
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) return v.size();//填空
}
}
public static void main(String[] args){
int a = f(11,13);
System.out.println(a);
}
}