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 }