題目
/* 生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生日party的年齡數。 注意:你提交的應該是一個整數,不要填寫任何多余的內容或說明性文字。 */
答案
26
代碼
1 public class Main { 2 public static void main(String[] args) { 3 //從1歲開始試,到100歲截至 4 for(int i=1;i<100;i++){ 5 boolean is=false; //判斷是否得到結果,是 跳出,否 繼續循環 6 int s=i,n=i; //s 從第i年開始計算生日共吹熄的蠟燭數,n每一年要吹熄的蠟燭數 7 while(true){ 8 if(s==236){//總數等於236 則說明是從第i年開始計算的 9 System.out.println(i+"-"+n);//結果輸出 從第i年開始到現在n年 10 is = true; 11 break; 12 } 13 if(s>236) //如果總數大於236 則說明不是從第i年開始計算的 14 break; 15 //否則繼續疊加 這個代碼放在if前面也可以 因為由題目可以看出肯定不會是只過了一年生日 16 n++; //下一年要吹熄的蠟燭數 17 s +=n;//繼續累計吹熄的蠟燭數 18 } 19 if(is) 20 break; 21 } 22 } 23 }
解析
可以盡量用代碼思想來考慮,循環試出來 ,而不用考慮到數學問題上去,這樣會提升代碼的邏輯難度,容易出錯