標題:迴圈節長度
兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為:迴圈節,比如:
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) ____________________ //填空;
}
}
注意:只能填寫缺少的部分,不要重複抄寫已有程式碼,不要填寫任何多餘的文字。
解題思路:
本題主要使用vector來對餘數進行儲存,之後將餘數與陣列中儲存的資料進行對比,判斷資料是否重複,之後判斷重複的資料長度即可。
答案原始碼:
import java.util.Vector; public class Year2015_Bt4 { 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; n = n % m; if (n==0) return 0; if(v.indexOf(n)>=0) return v.size()-v.indexOf(n); } } }
輸出樣例: