兩個整數做除法,有時會產生循環小數,其循環部分稱爲:循環節。
比如,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