2014年蓝桥杯Java C组——猜年龄
标题:猜年龄
小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“ 我们俩的年龄之积是年龄之和的6倍”。
小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。”
请你写出:小明的较小的妹妹的年龄。
注意:只写 一个人的年龄数字,请通过浏览器提交答案。不要书写任何多余的内容。
这里其实只要列出公式就能直接出结果了:
我们设妹妹的年龄为i,姐姐的年龄为j。
那么根据题意可得:
表达式1:
i<j
表达式2:
|i-j|<8
列公式:
i * j == 6 * (i + j)
公式组合:
i * j == 6 * (i + j) and |i - j| < 8 and i < j
由于只有一个等式:【i * j == 6 * (i + j)】,其余的两个都是不等式,那么,我们其实是无从下手的,数字简单我们可以看出来,既然小姑娘,那么年龄肯定是在16岁之内的,我们可以使用枚举的方法,其实就是纯暴力测试,我们使用i与j两个for循环来控制循环的变量,当党组组合公式的时候我们进行输出结果即可。
那么,我们组合公式需要使用一个符号来处理这个逻辑。逻辑与,也就是&&符号,使三个条件都满足,在这种满足条件下出的结果才是正确的结果。
还有需要使用Math函数的abs函数来计算绝对值。
那么,接下来我们看看编码效果:
package com.item.action;
public class Main {
public static void main(String[] args) {// 主函数
for (int i = 1; i < 30; i++) {
for (int j = 1; j < 40; j++) {
if (i * j == 6 * (i + j) && Math.abs(i - j) < 8 && i < j) {
System.out.println(i);
}
}
}
}
}
这里我是从1-18岁计算的,其实既然是会说话的小女孩起码也应该3岁以上了,不用那么精准,能暴力出来就可以。
以下是输出结果:
由于我们要的是妹妹的年龄,故而输出10。姐姐的年龄是15岁,也就是j的值。