N - Select Mul
思路:当成字符串输入,先用C++的next_permutation函数找出这个它的全排列,对于每个全排列用暴力分成两段求积(用stoi函数把字符串转成10进制),找出最大的即可
代码:
//https://vjudge.net/contest/485999#problem/N
//C++全排列函数 next_permutation
//枚举n位数的全排列
//对每个全排列暴力分成两端求乘积,找出最大值即可
//stoi函数将字符串转成整数输出
#include<bits/stdc++.h>
using namespace std;
int ans;
string N;
int main() {
cin >> N;
sort(N.begin(), N.end());
do {
for (int i = 1; i < N.size(); i++) {
string l = "", r = "";
for (int j = 0; j < i; j++) l += N[j];
for (int j = i; j < N.size(); j++) r += N[j];
if (l[0] == '0' || r[0] == '0') continue;
ans = max(ans, stoi(l) * stoi(r));
}
} while (next_permutation(N.begin(), N.end()));
cout<<ans<<endl;
}