题目:某君从某年开始每年都举办一次生日 party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了 236 根蜡烛。
请问,他从多少岁开始过生日 party的?
请输出他开始过生日 party 的年龄数。
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
解题思路+代码:
代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class 生日蜡烛 {
public static void main(String[] args) {
//遍历起始年份
for(int i = 1; i<=100;i++) {
int sum = 0;
//遍历结束年份
for(int j = i; j<=100; j++){
sum += j;
//从起始年到结束年蜡烛总数为236时输出起始年
if(sum == 236){
System.out.println(i);
break; //剪枝,结束双层内循环
}
}
}
}
}
总结: 一道连续子序列求和问题(经典的双循环枚举),从某年开始一直到某一年结束,在得到某个数后返回开始的年份。双循环累加计数,找到符合的数就终止循环(剪枝)。