【藍(lán)橋杯】第六屆-4-循環(huán)節(jié)長(zhǎng)度

題目

循環(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);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容