当前位置: 代码迷 >> 综合 >> 蓝桥杯真题“猜年龄”
  详细解决方案

蓝桥杯真题“猜年龄”

热度:20   发布时间:2024-02-25 05:34:17.0

标题: 猜年龄

    美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。

    一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:

    “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”

    请你推算一下,他当时到底有多年轻。

    通过浏览器,直接提交他那时的年龄数字。

    注意:不要提交解答过程,或其它的说明文字。


解题思路:

直接利用循环加判断的组合暴力破解,set集合不允许有重复值,可以利用这个特性免去写“去重算法”

答案:18岁

import java.util.HashSet;
import java.util.Set;/*** 标题: 猜年龄* 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。* 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:* “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”* 请你推算一下,他当时到底有多年轻。* 通过浏览器,直接提交他那时的年龄数字。* 注意:不要提交解答过程,或其它的说明文字。** @author 攻城狮VLOG*/
public class Main {public static void main(String[] args) {String str = "";//循环出所有可能的年龄for (int i = 0; i < 100; i++) {String s1 = i * i * i + "";String s2 = i * i * i * i + "";if (s1.length() == 4) {//立方是个四位数if (s2.length() == 6) {//四次方是个六位数str = s1 + s2;if (str.length() == 10) {//组合到一起是一个长度为10的字符串Set set = new HashSet();//利用set集合没有重复值的特性将重复的值给去除掉for (int j = 0; j < str.length(); j++) {set.add(str.charAt(j));}if (set.size() == 10) {//如果去重之后长度还是10那么说明刚刚好包含0-9所有的数System.out.println(i);}} else {continue;}} else {continue;}} else {continue;}}}}

 

  相关解决方案