题目最大限制是10^9,做时心情好冲动忘记以2为基。a[10]很华丽地WA,为毛不是RTE?这题跟好像是11年省赛我们一直酱油的那题本质一样,如果没记错的话。我是以二进制1个数做。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int bit_count(long long n) { int count; for(count = 0; n; n &= n - 1) { count++; } return count; } int main() { long long a[50]; long long tmp, count = 0; int t; memset(a, 0, sizeof(a)); cin>>t; for (int i = 0; i < t; i++) { cin>>tmp; a[ bit_count(tmp) ]++; } for (int i = 1 ; i < 50; i++) { if (a[i] % 2 == 0) count += a[i] / 2 * (a[i]-1) ; else count += (a[i]-1) / 2 * a[i] ; } cout<<count<<endl; return 0; }