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

时间:2022-09-09 21:16:37

题目

/*
生日蜡烛

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

 

 

解析

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