蓝桥杯第4届(校园站)Java本科A组试题1:猜年龄

/*
 *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+"岁!");
 			}
 		}
 	}
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值