可以暴力,但这里学习了一个新思路,就是把原式进行分解会得到[1/a[i]+1/a[j]],因为向下取整,我们可以发现,1作用于1结果为2,1作用于除了1之外的数结果为1,2作用于2结果为1,所以我们只需要进行对1,2,的查找就可以了,我们可以把结果进行化简得到一个最简式sum=a1*(a1+a2+other-1)+a2*(a2-1)/2
#include<iostream> using namespace std; int main() { int n; while(cin>>n) { long long m; int a1=0,a2=0,other=0; for(int i=0;i<n;i++) { cin>>m; if(m==1) a1++; else if(m==2) a2++; else other++; } int sum=a1*(a1+a2+other-1)+a2*(a2-1)/2; cout<<sum<<endl; } return 0; }
原文:http://www.cnblogs.com/lulichuan/p/6306098.html