#include<bits/stdc++.h>
using namespace std;
#define ll long long
double eps=1e-8;
int a[]={1,2,3,4,5,6,7,8,9};
ll ans=0;
set<int>s;
void f(int x)
{
s.clear();
ll num1=0;
ll num2=0;
for(int i=0;i<x;i++)
{
num1=num1*10+a[i];
}
for(int i=x;i<9;i++)
{
num2=num2*10+a[i];
}
ll num3=num1*num2;
while(num3)
{
if(num3%10==0) break;
s.insert(num3%10);
num3/=10;
}
// cout<<num1<<num2<<endl;
if(s.size()==9) ans=max(ans,num1*num2);
}
int main()
{
do
{
for(int i=1;i<9;i++) ///本题的关键就是要枚举出乘号的位置
{
f(i);
}
}while(next_permutation(a,a+9));
cout<<ans<<endl;
// cout<<839542176<<endl;
}
1397: [蓝桥杯2018决赛]最大乘积(全排列)(思维)
最新推荐文章于 2022-03-31 15:27:20 发布