C - mex和gcd的乘积

分类讨论

区间mex = 0时,ans = 0

区间mex = 1时,看gcd的大小,此时仅看0左右元素即可

区间mex > 1时,gcd = 1,看mex即可,仔细想想看整个数组的mex即可

注意特判全0的数组!

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=64631739

D - 2^20

首先题目给的两种操作的效果就是 x = x + 1 和 x = x * 2

那么想要一个数是 2^20 的倍数,最多操作 20 次乘 2 操作即可,所以答案最大肯定是20

那么接下来就是考虑 + 1 操作会不会减少总的操作次数。考虑二进制表示可以知道,* 2 相当于末尾添0,+ 1 相当于+ 1?可能会伴随进位,此时可以增加末尾 0 的个数,而 2^20 的倍数的二进制表示的末尾一定有大于等于 20 个 0,那么只需要最多遍历20次末尾 + 1 再乘 2 所需的操作数,取最小作为答案即可。

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=64632719