51Nod 1305 Pairwise Sum and Divide

来源:互联网 发布:上海特效牙膏知乎 编辑:程序博客网 时间:2024/05/29 14:27


这题看了讨论区的说就与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;}


原创粉丝点击