这题看了讨论区的说就与1和2有关
自己真欠缺思考。如果两个数a,b不为1或者2 。a+b/(a*b)=0
如果取一个1和一个不为1的,a+b/(a*b)=1
取两个1,a+b/(a*b)=2
取两个2,a+b/(a*b)=1
然后只要保存1和2的个数就行
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
using namespace std;
int main(){
int n;
cin>>n;
int a1=0,a2=0;
for(int i=0;i<n;i++){
int num;
scanf("%d",&num);
if(num==1) a1++;
if(num==2) a2++;
}
int sum=0;
sum=a1*(n-a1);//取一个1和任意一个不为1
sum+=a1*(a1-1);//取两个1
sum+=a2*(a2-1)/2;//取两个2
cout<<sum;
return 0;
}