結果

問題 No.305 鍵(2)
ユーザー 14番14番
提出日時 2016-05-16 14:33:12
言語 Java21
(openjdk 21)
結果
AC  
実行時間 156 ms / 2,000 ms
コード長 2,657 bytes
コンパイル時間 2,764 ms
コンパイル使用メモリ 80,644 KB
実行使用メモリ 57,788 KB
平均クエリ数 31.00
最終ジャッジ日時 2024-07-16 23:43:33
合計ジャッジ時間 5,802 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 135 ms
57,016 KB
testcase_01 AC 144 ms
57,128 KB
testcase_02 AC 135 ms
57,028 KB
testcase_03 AC 137 ms
57,500 KB
testcase_04 AC 150 ms
57,160 KB
testcase_05 AC 83 ms
53,744 KB
testcase_06 AC 81 ms
53,412 KB
testcase_07 AC 145 ms
57,316 KB
testcase_08 AC 149 ms
57,240 KB
testcase_09 AC 146 ms
57,788 KB
testcase_10 AC 156 ms
57,608 KB
testcase_11 AC 145 ms
57,332 KB
testcase_12 AC 155 ms
57,112 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;

public class Main {

	public BufferedReader br;

	/**
	 * メイン処理
	 * @throws IOException
	 */
	public void Proc() throws IOException {
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		int minCount = Integer.MAX_VALUE;
		for(int i=0; i<=9; i++) {
			System.out.println(this.DupChar(10, "" + i));
			String[] ret = br.readLine().split(" ");
			int cnt = Integer.parseInt(ret[0]);
			if(cnt == 10) {
				return;
			}
			map.put(i, cnt);
			minCount = Math.min(minCount, cnt);
		}
		Integer[] ans = new Integer[10];
		if(minCount == 0) {
			int umeNum = -1;
			for(Integer key : map.keySet()) {
				if(map.get(key).intValue() == 0) {
					umeNum = key.intValue();
					break;
				}
			}
			for(int i=0; i<=9; i++) {
				if(map.get(i).intValue() == 0) {
					continue;
				}
				for(int j=0; j<map.get(i).intValue(); j++) {
					for(int k=0; k<ans.length; k++) {
						if(ans[k] != null) {
							continue;
						}
						System.out.println(this.DupChar(k, "" + umeNum) + i + this.DupChar(10 - k - 1, "" + umeNum));
						String[] ret = br.readLine().split(" ");
						int cnt = Integer.parseInt(ret[0]);
						if(cnt == 10) {
							return;
						}
						if(cnt == 1) {
							ans[k] = i;
							break;
						}
					}
				}
			}

		} else {
			for(int i=0; i<=8; i++) {
				for(int j=0; j<ans.length; j++) {
					if(ans[j] != null) {
						continue;
					}
					System.out.println(this.DupChar(j, "9") + i + this.DupChar(10 - j - 1, "9"));
					String[] ret = br.readLine().split(" ");
					int cnt = Integer.parseInt(ret[0]);
					if(cnt == 10) {
						return;
					}
					if(cnt == 2) {
						ans[j] = i;
						break;
					}
				}
			}
			for(int i=0; i<ans.length; i++) {
				if(ans[i] == null) {
					ans[i] = 9;
					break;
				}
			}
		}
		StringBuilder ansStr = new StringBuilder();
		for(Integer num : ans) {
			ansStr.append(num.intValue());
		}
		System.out.println(ansStr.toString());
		String last = br.readLine();
		return;
	}

	private String DupChar (int len, String s) {
		StringBuilder sb = new StringBuilder();
		for(int i=0; i<len; i++) {
			sb.append(s);
		}
		return sb.toString();
	}


	public static void main(String[] args)  {
		Main mn = new Main();
		mn.br = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
		try {
			mn.Proc();
		} catch (IOException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} finally {
			try {
				mn.br.close();
			} catch (IOException e) {
				// TODO 自動生成された catch ブロック
				e.printStackTrace();
			}
		}
	}


}

0