蓝桥杯真题“猜年龄”

    科技2022-07-20  110

    标题: 猜年龄

        美国数学家维纳(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; } } } }

     

    Processed: 0.018, SQL: 8