/*
*CopyRight (C), Saluton+, All Rights Reserved.
*Filename:GuessAge.java
*Author: Saluton+ Version: 1.0 Date: 2014.08.08
*Description: 蓝桥杯第4届(校园站)Java本科A组试题1:
* 题目描述:猜年龄
* 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
* 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:
* “我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
* 请你推算一下,他当时到底有多年轻?
*/
import java.util.*;
public class GuessYear{
public static boolean isCoverAllFigures(int n){
Set<Integer> set = new HashSet<Integer>(); //利用Set元素的不可重复性来判断是否包含0~9数字!
int tmp1 = (int)Math.pow(n, 3);
int tmp2 = (int)Math.pow(n, 4);
while(tmp1 != 0){ //可以再优化;
int t = tmp1 % 10;
set.add(t);
tmp1 = tmp1 / 10;
}
while(tmp2 != 0){
int p = tmp2 % 10;
set.add(p);
tmp2 = tmp2 /10;
}
if(set.size() == 10){
return true;
}
return false;
}
public static void main(String[] args){
for(int i = 18; i<22; i++){ //立方是个4位数(1000~9999),4次方是个6位数(100000~999999),可由简单计算知道年龄在某个范围;
if(isCoverAllFigures(i) == true ){
System.out.println("数学家维纳的年龄是"+i+"岁!");
}
}
}
}
蓝桥杯第4届(校园站)Java本科A组试题1:猜年龄
最新推荐文章于 2023-04-06 20:26:05 发布