标题: 猜年龄
美国数学家维纳(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;}}}}