对tj产生的疑问
查看原帖
对tj产生的疑问
743373
Vitamin_B楼主2024/4/30 20:23

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。

接着我看了题解,题解中说是总数-全大于-全小于-全等于,这是为什么?

2024/4/30 20:23
加载中...