数位dp
例题
求第 \(k\) 个数位不包含 \(4\) 的正整数。
二分答案,使用数位dp统计 \([1,mid]\) 包含的个数即可。
代码
给出一个只包含4和7的数字,问它是第几个只包含4和7的正整数。
代码
问 \([L,R]\) 数位中每存在一个 \(7\),贡献 \(3\),数位中每存在一个 \(5\),贡献 \(1\),存在连续的 \(7\) 个 \(7\),贡献 \(300\)。
代码
对每个数字进行 \(2\) 次数位dp即可。\(0\) 要特判。
代码
给定四个正整数 \(N,A_1,A_2,A_3\),试求满足以下条件的三元组 \((X_1,X_2,X_3)\) 的对数,对 \(998244353\) 取模。
\(1\leq X_i\leq N\)
\(X_i \% A_i = 0\)
\((X_1\oplus X_2)\oplus x_3=0\)
代码
习题
P8766 [蓝桥杯 2021 国 AB] 异或三角 - 洛谷
因为 \(a\oplus b\oplus c=0\),所以 \(a=b\oplus c\)。
因为要构成三角形,令 \(a\) 为最大的边,则有 \(a< b+c\),即 \(b\oplus c< b+c\)
易知对于任意 \(b,c\) 有 \(b\oplus c< b+c\)。
如果想要 \(b\oplus c< b+c\),则 \(b,c\) 二进制某一位一定都是 \(1\)。
所以数位dp即可。
代码
数位dp枚举二进制的01, 存s为有多少位是lim, 存sum表示对数列两两之间的异或和。