AtCoder Beginner Contest 042

C - Iroha's Obsession

用一个 \(\rm st\) 数组把每一位标记,然后枚举大于 \(n\) 的数,一旦有各位都满足要求的数出现就 \(\rm break\)

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

bool st[10];

bool check(int x) {
	while (x) {
		int b = x % 10;
		if (st[b]) return false;
		x /= 10;
	}
	return true;
}

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr);
	int n, k;
	cin >> n >> k;
	vector<int> D(k);
	for (int i = 0; i < k; i++) {
		cin >> D[i];
		st[D[i]] = true;
	}
	for (int i = n; ; i++) {//规定n<=1e4,但要求输出的≥n,可以在1e4以上。因此这里不需规定上限。
		if (check(i)) {
			cout << i;
			break;
		}
	}
	return 0;
}
posted @ 2024-07-04 11:06  胖柚の工作室  阅读(41)  评论(0)    收藏  举报