某君从某年开始每年都举办一次生日 party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了 236 根蜡烛。
请问,他从多少岁开始过生日 party 的?
请填写他开始过生日 party 的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
以上是蓝桥杯大赛真题的描述。答案的做法是利用枚举来解决这个问题,语言是 c++。答案的解释如下:
直接从 1~236 枚举 start, end 分别表示他开始过生日的年龄和今年的年龄,然后计算之间吹蜡烛的总和如果等于 236 就输出 start ,end。
int main()
{
int start,end;
for(start = 1 ; start < 236 ; start ++)
{
for( end = start ; end < 236 ; end ++ )
{
int sum = 0;
for(int i = start; i <= end; i ++)
sum += i;
if( sum == 236)
{
printf("start : %d end : %d\n",start,end);
}
}
}
return 0;
}
这里的 start 与 end 可以用两个一维数组代替,于是用 java 编的话,可以将代码修改如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] a = new int[50];
int[] b = new int[50];
a[0]=0;
for (int i = 1; i < 50; i++) {
a[i]=i;
for(int j =i;j<50;j++) {
b[j]=j;
int sum = 0;
for(int x=a[i];xif (sum == 236) {
System.out.println(a[i]);
}
}
}
}
}
}
这样运行出来的结果就是答案所给的 26 了。不过我一开始犯了一个很蠢的错误,把 int sum = 0 这个语句放在了第二个 for 循环里面,真的太蠢了……
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于