某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
首先看到问题的第一眼,会想到数学当中的,设x岁开始进行吹蜡烛,每一年都在上一年的基础进行+1即 x x+1 x+2 x+3 x+4 ..... x+n,求前n项和,然后将236代入进行求解。
解题思路:1、我们就设x,还有一个总和的变量。即总的蜡烛求和量
2 x=i+j, 这其中的i为我们实际上的x岁,j为每一年蜡烛的增加量。首先我们并不知道从哪一岁开始吹蜡烛,所以运用数学思维的话,我们要一个个去试,转化成代码的语言就是我们从1到一个确定的数之间进行循环来求出最后的岁数。(这边用1-100岁)。
3转化为java语言,应用for循环的嵌套,首先最外层for循环,i从1开始一直到100,内层for循环,j从1到100.第一次的循环为从1岁开始吹蜡烛,以此类推,从两岁三岁,一直到100岁。每一次循环sum+=x
4、进行判断条件,用if语句,条件为sum总和等于236
如果蜡烛总和刚好等于236,那么输出i,退出循环 即就是我们前面假设的x,从x岁开始吹蜡烛。
如果大于236,则直接退出,因为当大于236时,输出 的i即x岁也不是我们想要的结果。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<100;i++){//设x岁开始吹蜡烛
int sum=0;//x=i+i,设置一个总和的变量 x+1 x+2 x+3 x+4 x+5
int x=0;//设置x
for(int j=1;j<100;j++) {
x=i+j; //设置两个循环进行测试,i和j都从1开始进行
sum=x+sum;
if(sum==236) {
System.out.println(i);//如果sum=236
break;//则输出当i等于多少时才等于236。即上述理论中的x,退出循环
}
else if (sum > 236) {
break;//如果大于236,则退出循环
}
}
}
}
}