题目编号夺少
by cgxd @ 2024-04-20 16:41:33
先排序。
最小乘积的值一定是前三项积。
讨论与前三项相同数字个数即可。
by analysis @ 2024-04-20 16:43:58
@[lwchenxiyu](/user/1082499) 显然就是在取最小的 $3$ 个数。这个东西直接遍历一下,算出对应的 $minn_1,minn_2,minn_3$ 和出现个数即可。(当然懒的话可以直接 sort)
by naoliaok_lovely @ 2024-04-20 16:44:43
用递归吧
by _Clown__ @ 2024-04-20 16:45:56
谢谢各位
AC了
这是我的代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int a[200005];
long long sum1,sum2,sum3;
long long a1,a2,a3;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(a1!=a[i]&&a1==0)a1=a[i];
else if(a2!=a[i]&&a2==0)a2=a[i];
else if(a3!=a[i]&&a3==0)a3=a[i];
}
for(int i=1;i<=n;i++){
if(a[i]==a1)sum1++;
if(a[i]==a2)sum2++;
if(a[i]==a3)sum3++;
}
if(sum1>=3){
cout<<sum1*(sum1-1)*(sum1-2)/6;
}else{
if(sum1==2){
cout<<sum2;
}else{
if(sum2>=2){
cout<<sum2*(sum2-1)/3;
}else{
cout<<sum1*sum2*sum3;
}
}
}
return 0;
}
```
by lwchenxiyu @ 2024-04-27 08:33:04