CF459C 构造 进制转换
CF459C Pashmak and Buses
构造 \(n\) 个长度为 \(d\),范围在 \([1, k]\) 的序列,使得序列之间两两不等。
长度都为 \(d\) 的序列 \(A, B\) 不等指不成立 \(\forall i \in [1, d], ~ A_i = B_i\)。
由于只有 \(k^d\) 种可能的序列,如果 \(k^d > n\),根据 抽屉原理,无法满足「两两不等」的要求,输出 \(-1\)。
接下来解决「两两不等」。可以联想到用 \(1 \sim k\) 的数码,即 \(k\) 进制数来表示状态。那么 \(n\) 种状态也就是 \(1 \sim n\) 的 \(k\) 进制数,转换进制即可。
另外要注意判断 \(k^d\) 是否 \(> n\) 时,不能朴素乘。可以使用循环,当超过 \(n\) 时直接输出 \(-1\) 并退出;也可以特判一系列会超出数字范围的情况后,直接使用 pow() 来判断。
代码。

浙公网安备 33010602011771号