题目:
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
分析:
因为吹蜡烛是从开始那年一直吹,知道蜡烛数量达到236根,所以这是相差为1的等差数列。
i遍历代表开始吹蜡烛的年龄,j代表达到236的年龄。
j肯定是大于等于i的。
我们就可以根据等差数列,首尾相加乘以个数除以二来找到开始的数i,
本题的找到这个等差数列就OK了
(i+j)*(j-i+1)/2
步骤:
![](https://i-blog.csdnimg.cn/blog_migrate/0b360dfd3fcd6659a6b752c2c668de77.png)
package a28;
public class 吹蜡烛 {
public static void main(String[] args) {
// 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一吹熄了236根蜡烛。
// 请问,他从多少岁开始过生日party的?
for(int i=1;i<=100;i++) {//开始吹蜡烛的年龄
for(int j=i;j<=100;j++) {//到达236根蜡烛的年龄
//开始吹蜡烛的年龄一直加到到达236根蜡烛的年龄是我们高中学的等差数列。
if((i+j)*(j-i+1)/2==236) {//首尾想加乘以个数除以2,一共吹的蜡烛等于236,输出i(开始吹蜡烛的年龄)
System.out.println(i);
}
}
}
}
}