1973. Iroha's Obsession

题意:给你一个小于1e4的正整数n,和一个合法digit集合(保证至少有一个非0 digit合法)。称一个数字合法,当且仅当它所包含digit都合法,让你找出一个不小于n的最小合法数字。

观察:因为至少有一个合法的非0digit,那么至少 11111, 22222, ...., 99999 当中有一个合法,所以,答案不会超过 99999。

方法:

1. 直接暴力枚举ans,然后判断ans是否可行即可。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 #define mp make_pair
 5 #define pb push_back
 6 
 7 typedef long long ll;
 8 typedef pair<int, int> ii;
 9 typedef pair<ll, ll> l4;
10 
11 
12 bool valid[10];
13 inline bool solve(int n)
14 {
15   while (n)
16     {
17       if (!valid[n%10])
18     return false;
19       n /= 10;
20     }
21   return true;
22 }
23 int main()
24 {
25   int n, k;
26   scanf("%d %d", &n, &k);
27   memset(valid, 1, sizeof(valid));
28   for (int i = 0; i < k; ++i)
29     {
30       int x;
31       scanf("%d", &x);
32       valid[x] = false;
33     }
34   while (!solve(n))
35     ++n;
36   printf("%d\n", n);
37 }
View Code

相关文章: