[デイリーブルーブリッジ] 1。第13回州大会のJavaグループの「GuesstheAge」

こんにちは、私は小さな灰色の類人猿で、バグを書くことができるプログラマーです!

私のコラム「DailyBlueBridge」に注目してください。このコラムの主な機能は、近年のBlue Bridge Cup州の大会や決勝戦の本当の質問を共有し、アルゴリズムのアイデア、データ構造などを分析することです。その中に存在し、あなたが学ぶのを助けるコンテンツより多くの知識と技術に!

トピック:年齢を推測する

アメリカの数学者ウィーナー(N.ウィーナー)は、知性が未熟で、11歳で大学に進学しました。1935年から1936年に中国の清華大学で講義に招待されました。かつて、彼は重要な会議と若い顔に出席しました。目を引くものだったので、誰かが彼の年齢を尋ねると、彼は答えました:

「私の年齢の3乗は4桁の数字で、私の年齢の4乗は6桁の数字です。これらの10桁には、たまたま0から9までの10桁が含まれており、それぞれが1回だけ表示されます。計算してください。方法その時彼は若かった、

その時の年齢番号をブラウザから直接送信し、

注:回答プロセスやその他の説明文は提出しないでください。」

回答のソースコード:

package 一三年省赛真题;

import java.util.HashSet;
import java.util.Set;
public class One {

	public static void main(String[] args) {
		//在10岁到100岁之间寻找
		for (int i = 10; i < 100; i++) {
			int i3 = i*i*i;	//获取到3次方
			int i4 = i3*i;	//获取到4次方
			String s3 = i3 + "";	
			String s4 = i4 + "";
			
			//判断立方的结果是否是4位数,4次方的结果是否是6位数,字符是否是由10个不重复的数字组成
			//同时成立则输出年龄
			if (s3.length()==4&&s4.length()==6&&check(s3+s4)) {
				System.out.println(i);
			}
		}
	}

	/**
	 * 判断字符是否是由10个不重复的数字组成
	 * @param s 判断的字符
	 * @return true
	 * */
	private static boolean check(String s) {
		Set<Character> set = new HashSet<Character>();	//建立不存放重复字符的集合
//		HashSet<String> set = new HashSet<String>();
		for (int i = 0; i < s.length(); i++) {
			//将字符中的每一个元素单独拿出存放到集合中,若元素重复则不被存放
			set.add(s.charAt(i));	
		}
		return set.size()==10;	//字符长度等于10,返回True
	}
	
}

 

サンプル出力:

欠点や改善点がありますので、友達にメッセージを残して一緒に学んでもらいたいです!

興味のある友達はコラムをフォローできます!

リトルグレイエイプは一緒に進歩するためにあなたに同行します!

 

おすすめ

転載: blog.csdn.net/weixin_44985880/article/details/112393479