这题怎么做

学术版

题目编号夺少
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


|