最近有一場面試中的一道題很特別,當時有點??,冷靜下來后捋清了思路,大家面試中一定不要緊張,下面記錄下該題。
在一個神話故事中,有一只小兔住在一個周長為一千米的圓形神湖旁,A.B兩點把這個神湖分成兩部分,已知小兔從B點出發(fā),沿逆時針方向繞神湖做跳躍運動,它每跳8分之3千米休息一次,如果跳到A點正好休息,那么就會經(jīng)過特別通道AB滑倒B點,從B點繼續(xù)跳。它每經(jīng)過一次特別通道,神湖半徑就擴大一倍,現(xiàn)知小兔共休息1000次,這是神湖周長是多少千米?(AB為圓的直徑)
現(xiàn)在要求編一段簡短的程序求的結(jié)果,請在下方寫出偽代碼:
整理答案如下:
public class hello {
public static void main(String[] orgs) {
/*神湖周長*/
double c = 1000;
/*跳躍一次的距離*/
double jump = 375;
/*到a點休息時跳躍的次數(shù)*/
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點時,記錄下此時跳躍的次數(shù)"i",并賦值給變量j,通過(i-j)實現(xiàn)其由特殊通道回到A點的效果,重新計算距離。
個人見解,不足之處,歡迎討論!