#include<bits/stdc++.h> usingnamespace std; using ll = longlong; intmain() { int n, k; cin >> n >> k; vector<int> vis(100); for (int i = 1; i <= k; i++) { int x; cin >> x; vis[x] = 1; } for (int i = n; i <= 1000000; i++) { int x = i; bool flag = 0; while (x) { if (vis[x % 10]) { flag = 1; break; } x /= 10; } if (!flag) { cout << i << '\n'; return0; } }
#include<bits/stdc++.h> usingnamespace std; using ll = longlong; constint maxn = 2e5 + 10; const ll mod = 1e9 + 7; ll inv[maxn], fac[maxn]; // 分别表示逆元和阶乘 // 快速幂 ll quickPow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans = (ans * a) % mod; b >>= 1; a = (a * a) % mod; } return ans; }
voidinit() { // 求阶乘 fac[0] = 1; for (int i = 1; i <= maxn; i++) { fac[i] = fac[i - 1] * i % mod; } // 求逆元 inv[maxn - 1] = quickPow(fac[maxn - 1], mod - 2); for (int i = maxn - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % mod; } } ll C(int n, int m) { if (m > n) { return0; } if (m == 0) return1; return fac[n] * inv[m] % mod * inv[n - m] % mod; } ll get(ll a, ll b, ll c, ll d) { returnC(c - a + d - b, c - a) % mod; } intmain() { init(); ll h, w; ll a, b; cin >> h >> w >> a >> b; ll ans = 0; for (int i = 1; i <= h - a; i++) { ans = (ans + get(1, 1, i, b) * get(i, b + 1, h, w) % mod) % mod; } cout << ans << '\n'; return0; }