本文主要是介绍蓝桥杯2016年第十三届省赛真题-生日蜡烛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目
生日蜡烛.
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字
二、分析
开始年龄不知道,现在的年龄也不知道,那我们就两层for循环遍历,外层循环控制开始年龄,内层循环控制最终年龄,看是否两个年龄之和等于236.
代码:
package lan2016;public class B生日蜡烛 {public static void main(String[] args) {for(int i = 1; i < 200; i++) {for(int j = i; j < 200; j++) {f(i,j);}}}public static void f(int i , int j) {int sum = 0;int n = i;//要记录最开始的iwhile(i < j ) {sum += i;i++;}if(sum == 236) {System.out.println(n);}}
}
反思:
然后最重要的是算i到j年龄之和,我们可以写一个方法来算。方法的的参数有两个,起始年龄和最终的年龄,然后将年龄递增的加到sum里,注意要先保存其实年龄的值,否则会因为递增而使起始年龄改变。
还有更简单的代码:
package lan2016;public class B生日蜡烛2 {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; if(sum == 236) System.out.println(i); } } }
}
可以写成这样的原因是:内层的遍历本来就是从i(起始年龄)开始到j(现在的年龄),根本不需要你重新写一个循环是从起始年龄到现在的年龄,即相当于现在的j是从i到j,直接加到sum里就可以,判断一下输出即可。
这篇关于蓝桥杯2016年第十三届省赛真题-生日蜡烛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!