rt,我自己的想法是总填发 - 全>= - 全<=,剩下的都是既有>又有<。
# pragma GCC optimize("Ofast,no-stack-protector")
# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
# include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int mod = 1e9 + 7;
int n, sum = 1, x = 1;
string a, b;
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> a >> b;
for (int i = 0; i < n; ++ i) {
if (a[i] == '?')
sum = sum * 10ll % mod;
if (b[i] == '?')
sum = sum * 10ll % mod;
}
// cout << sum << ' ';
for (int i = 0; i < n; ++ i)
if (a[i] == '?')
if (b[i] == '?')
x = x * 55ll % mod;
else
x = x * (a[i] - '0' + 1ll) % mod;
else if (b[i] == '?')
x = x * ('9' - b[i] + 1ll) % mod;
else if (a[i] < b[i]) {
x = 0;
break ;
}
// cout << x << ' ';
sum -= x, sum %= mod, x = 1;
for (int i = 0; i < n; ++ i)
if (a[i] == '?')
if (b[i] == '?')
x = x * 55ll % mod;
else
x = x * ('9' - b[i] + 1ll) % mod;
else if (b[i] == '?')
x = x * (a[i] - '0' + 1ll) % mod;
else if (a[i] > b[i]) {
x = 0;
break ;
}
// cout << x << '\n';
cout << ((sum - x) % mod + mod) % mod;
return 0;
}
然后WA样例三,输出了993431194。
接着我看了题解,题解中说是总数-全大于-全小于-全等于,这是为什么?