分享一个蓝桥杯的题目,在蓝桥杯中算是偏简单。可我就是想写(手动狗头)
是一个代码填空题,给出的代码如下
public static int func(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) 此处有空;}}
以上代码的作用是求两个数字相除的循环节长度。求循环节长度如果自己干想的话如果没有找对思路应该是很难的,我之前就一直在想怎么依靠求出来的商值去求。但依靠商值真的是个错误的想法。因为循环节可能是1231234这样的,这样程序碰到两个123就以为123就是所要求的了(不要抬杠,1231231234也有可能)。这里使用的是判断余数的做法,余数(也就是下一轮的被除数)相同,除数相同,商当然也相同。
这个题说他简单是因为这就是模拟的除法的过程,如果你清楚怎么实现大数运算的话就不在话下了。
好的,那么答案究竟是什么呢?接下来就是见证满分的时刻
return v.size()-v.indexOf(n)