第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)

题目

/*
生日蜡烛

某君从某年开始每年都举办一次生日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 }

解析

可以尽量用代码思想来考虑,循环试出来 ,而不用考虑到数学问题上去,这样会提升代码的逻辑难度,容易出错

原文地址:https://www.cnblogs.com/loveluking/p/6367312.html