蓝桥杯(java)个人赛真题:循环节长度

循环节长度

			两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
			比如,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)  _________________________________ ;  //填空
					}
				}
			
			注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。

思路:
其实像这种题,我一般刚开始会有侥幸偷懒心理,但确实,有挺多填空题是容易蒙对的,但也不能说是蒙,还是需要理解关键部分的代码加经验判断;分享一下我蒙这题的经验,首先题意很明确,先读懂题目,代码不多,这样就好蒙了,就一个方法,先在主函数中调用,测试用,输入测试值,然后看关键代码,答案必然是通过返回值得到,用逆推的思路确定要我们填写的地方必然是一个返回值并且是真确答案的返回值,因为上面只有一个返回固定值的返回值,显然不可能只有这一个,在蒙一下根据经验 v.indexOf(n)>=0 这行代码必然包含答案,先试一下size(),测试成功,在自己写别的测试数据,测试成功。结束!

package Lqb;

import java.util.Vector;

public class Text20 {
	
	public static void main(String[] args) {
		System.out.print(f(10,3));
	}
	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();  //填空
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42798905/article/details/87888652
今日推荐