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

时间:2022-01-24 15:09:08

题目

/*
生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 */

答案

26

代码

 public class Main {
public static void main(String[] args) {
//从1岁开始试,到100岁截至
for(int i=1;i<100;i++){
boolean is=false; //判断是否得到结果,是 跳出,否 继续循环
int s=i,n=i; //s 从第i年开始计算生日共吹熄的蜡烛数,n每一年要吹熄的蜡烛数
while(true){
if(s==236){//总数等于236 则说明是从第i年开始计算的
System.out.println(i+"-"+n);//结果输出 从第i年开始到现在n年
is = true;
break;
}
if(s>236) //如果总数大于236 则说明不是从第i年开始计算的
break;
//否则继续叠加 这个代码放在if前面也可以 因为由题目可以看出肯定不会是只过了一年生日
n++; //下一年要吹熄的蜡烛数
s +=n;//继续累计吹熄的蜡烛数
}
if(is)
break;
}
}
}

解析

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