ログインしてください。
提出 #53488951
ソースコード 拡げる
N, K = map(int, input().split()) D = list(map(int, input().split())) len_ = len(str(N)) is_use = set([i for i in range(10)]) ^ set(D) max_num = max(is_use) INF = int(str(max_num)*len_) if INF < N: len_ += 1 INF *= 10 INF += max_num # dp[i][S] := 上から i 桁目までで集合 S (1~9) で作れる N 以上の最小値 dp =[[INF]*(1 << 10) for _ in range(len_ + 1)] for i in range(len_): for S in range(1 << 10): for j in range(10): cnt = list(str(dp[i][S])) cnt[i] = str(j) cnt = int("".join(cnt)) if cnt >= N: dp[i + 1][S | (1 << j)] = min(dp[i + 1][S | (1 << j)], cnt) ans = INF use_bin = sum([(1 << i) for i in is_use]) for i in range(1 << 10): ans = min(ans, dp[len_][i & use_bin]) print(ans)
提出情報
提出日時 | |
---|---|
問題 | C - こだわり者いろはちゃん |
ユーザ | ryusuke_h |
言語 | Python (PyPy 3.10-v7.3.12) |
得点 | 300 |
コード長 | 826 Byte |
結果 | AC |
実行時間 | 80 ms |
メモリ | 83360 KiB |
ジャッジ結果
セット名 | Sample | All | ||
---|---|---|---|---|
得点 / 配点 | 0 / 0 | 300 / 300 | ||
結果 | AC |
|
セット名 | テストケース |
---|---|
Sample | |
All | subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_X_01.txt, subtask1_X_02.txt, subtask1_X_03.txt, subtask1_X_04.txt, subtask1_X_05.txt, subtask1_X_06.txt, subtask1_X_07.txt, subtask1_X_08.txt |
ケース名 | 結果 | 実行時間 | メモリ |
---|---|---|---|
subtask0_sample_01.txt | AC | 77 ms | 83104 KiB |
subtask0_sample_02.txt | AC | 74 ms | 83148 KiB |
subtask1_X_01.txt | AC | 78 ms | 83220 KiB |
subtask1_X_02.txt | AC | 80 ms | 83360 KiB |
subtask1_X_03.txt | AC | 77 ms | 83160 KiB |
subtask1_X_04.txt | AC | 74 ms | 82344 KiB |
subtask1_X_05.txt | AC | 64 ms | 82156 KiB |
subtask1_X_06.txt | AC | 78 ms | 83128 KiB |
subtask1_X_07.txt | AC | 77 ms | 82140 KiB |
subtask1_X_08.txt | AC | 75 ms | 82888 KiB |