2014年蓝桥杯Java C组——猜年龄

举报
红目香薰 发表于 2022/12/13 19:51:34 2022/12/13
【摘要】 ​2014年蓝桥杯Java C组——猜年龄标题:猜年龄小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“ 我们俩的年龄之积是年龄之和的6倍”。小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。”请你写出:小明的较小的妹妹的年龄。注意:只写 一个人的年龄数字,请通过浏览器提交答案。不要书写任何多余的内容。这里其实只要列出公式就能直接出结果了:我们设妹妹的年龄为i,姐姐的年...

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的值。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。