有符号整型的溢出是 UB。因此下面两种写法实际上是不正确的
long long o; unsigned long long ans = (o << 1) - 1; std::cout << ans << std::endl;
long long o; std::cout << (unsigned long long) ((o << 1) - 1) << std::endl;
代码为类似这两种写法的题解将不予通过。
因为通过了一部分此类题解后被后台撤回,题解实际通过情况以是否在题解界面显示为准。