最近有一场面试中的一道题很特别,当时有点😵,冷静下来后捋清了思路,大家面试中一定不要紧张,下面记录下该题。
在一个神话故事中,有一只小兔住在一个周长为一千米的圆形神湖旁,A.B两点把这个神湖分成两部分,已知小兔从B点出发,沿逆时针方向绕神湖做跳跃运动,它每跳8分之3千米休息一次,如果跳到A点正好休息,那么就会经过特别通道AB滑倒B点,从B点继续跳。它每经过一次特别通道,神湖半径就扩大一倍,现知小兔共休息1000次,这是神湖周长是多少千米?(AB为圆的直径)
现在要求编一段简短的程序求的结果,请在下方写出伪代码:
整理答案如下:
public class hello {
public static void main(String[] orgs) {
/*神湖周长*/
double c = 1000;
/*跳跃一次的距离*/
double jump = 375;
/*到a点休息时跳跃的次数*/
int j = 0;
/*跳跃1000次*/
for (int i = 1; i <= 1000; i++) {
/*跳跃到c/2*/
if (jump * (i - j) % c == c / 2) {
/*周长加倍*/
j = i;
c *= 2;
}
}
/*输出周长*/
System.out.print("神湖的周长是" + c + "米");
}
}
一些记录:
当小兔由B点跳到A点时,记录下此时跳跃的次数"i",并赋值给变量j,通过(i-j)
实现其由特殊通道回到A点的效果,重新计算距离。
个人见解,不足之处,欢迎讨论!
网友评论