循環節長度(藍橋杯)

兩個整數做除法,有時會產生循環小數,其循環部分稱爲:循環節。
比如,11/13=6=>0.846153846153.....  其循環節爲[846153] 共有6位。
下面的方法,可以求出循環節的長度。

請仔細閱讀代碼,並填寫劃線部分缺少的代碼。    答案:v.size(()

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.indexOf(n):查找n第一次再v中出現的位置,即索引,沒有找到返回-1

           (1):n=11、v.add(11)、n=110、n=6、v.indexOf=-1,v中一共有1個數據。

           (2):v.add(6)、n=60、n=8、v.indexOf=-1,v中一共有2個數據。

           (3):v.add(8)、n=80、n=2、v.indexOf=-1,v中一共有3個數據。

           (4):v.add(2)、n=20、n=7、v.indexOf=-1,v中一共有4個數據。

           (5):v.add(7)、n=70、n=5、v.indexOf=-1,v中一共有5個數據。

           (4):v.add(5)、n=50、n=11、v.indexOf=0,v中一共有6個數據。

代碼如下:

import java.util.Scanner;
import java.util.Vector;

public class 循環節長度
{
	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)
	{
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int m = in.nextInt();
		System.out.println(f(n,m));
	}
}

運行結果:

20 11
2
11 13
6

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章