错误原因

因为思路错误

思路

因为交换两个数字的数位它们的和不会改变,而当它们的差越来越小时,乘积会越来越大。

#include<bits/stdc++.h>
using namespace std;
string a, b;
long long x, y;
bool vis[100005];
bool cmp (string a, string b) {
	return a > b;
}
int f(string a, string b) {
	int idx = 0;
	int len = a.size();
	for (int i = 0; i < len; i++) {
		if (a[i] != b[i]) return i+1;
	}
}
int main(){
	freopen("mul.in", "r", stdin);
	freopen("mul.out", "w", stdout);
	cin >> a >> b;
	int len = a.size();
	if (!cmp(a, b)) swap(a, b);
	int idx = f(a, b);
	for (int i = idx; i < len; i++) {
		if (a[i] > b[i]) swap(a[i], b[i]);
	}
	for (int i = 0; i < len; i++) {
		x = x * 10 + a[i] - '0';
		y = y * 10 + b[i] - '0';
	}
	cout << x * y;
	return 0;
}