时隔一年啊,不会复建、、、
[HNOI2012] 与非
这个 \(\operatorname{NAND}\) 实际上可以做出任何位运算操作。而所有的位运算有一个性质,就是说如果两个位一样,那么操作完还是一样的。如果全部 \(a\) 中这些位置都相同,那么最后理应也相同。也就是假设对于所有 \(n\) 个 \(a\),这两个位置都是相同的,那么就应该一直是相同。找到等价类的数量,求 \(2\) 的次幂即可。
后面的部分就是数位 dp 了,具体来说我们枚举每个位置是什么值,然后判断一下这个地方是不是已经被确定了 \(0/1\)。这就是一些 trival 的东西。
[ARC172E] Last 9 Digits
注意到 \(x\) 与 \(10^k\) 互质,这里 \(n\) 也应该和 \(10^k\) 互质,所以就有可能可以使用欧拉定理。虽然目前看起来没什么用,但是我们稍微枚举一下,发现 \(10^9\) 和 \(10^8\) 应该没什么两样。于是看看换成 \(1000\) 有什么区别。一番操作下来,发现又是直接按位枚举就好,因为大的满足,小的也必须要满足,然后就做完了。