cf959E
题意简述:一个包含n个点的完全图,点的编号从0开始,两个点之间的权值等于两个点编号的异或值,求这个图的最小生成树
规律是 ∑ i from 0 to n-1 (i&-i)
#include <iostream> using namespace std; int main() { long long n,ans=0; scanf("%I64d",&n); n--; for (long long i=1;i<=n;i<<=1) ans+=((n-i)/(i<<1)+1)*i; printf("%I64d",ans); }