CF959E
jijidawang · · 题解
从 0 编号真难受啊
考虑归纳 .
令
根据 Prim 原理,只需要挑一条最小的和
现在的问题是最小边的边权是多少,显然就是
于是
简单处理一下边界就可以得到通项公式:
按位考虑,钦定一个
核心代码,仅供参考
ll x, ans;
int main()
{
scanf("%lld", &x); --x;
for (int i=0; x>>i; i++) ans += ((x >> i) - (x >> (i+1))) * (1ll << i);
printf("%lld\n", ans);
return 0;
}