题目 1110: 2^k进制数

题目描述:

r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数。 (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位。 (3)将r转换为2进制数q后,则q的总位数不超过w。 在这里,正整数k(1≤k≤9)和w(k〈w≤30000)是事先给定的。 问:满足上述条件的不同的r共有多少个

设:\(k=3, w=10\)

即,r为\(2^k=8\)进制数,r的每一位对应\(k=3\)个二进制数

则:\(r=00? \quad ??? \quad ??? \quad ??? \)

可以分两种情况讨论:

  1. 若r只取后三位\((w//k)\)
  2. r取四位\((w//k+1)\)

对于第一种情况

r 的位数\(nr \in [2, w//k]\)

r 每一位的取值\(v \in [1,2^k-1]\)

r 是一个递增序列,且每一位不重复 => 组合问题(与顺序无关)

所以对于第一种情况来说,r的取值共有

\[C_{2^k-1}^{i}(2\le i \le w//k) \]


对于第二种情况r的首位的取值范围为\((1\le x \le 2^{1(w\ mod\ k)})\)

从1开始是为了避免于第一种情况发生重复

若首位取值为\(x\)则r的后3\((w//k)\)位取值范围为\((x\le x_i\le 2^k-1)\)

即,r的取值共有

\[C_{2^k-1-j}^{w//k}(1\le j\le 2^{n\ mod\ k}) \]


结果为

\[C_{2^k-1}^{i}(2\le i \le w//k)+C_{2^k-1-j}^{w//k}(1\le j\le 2^{n\ mod\ k}) \]

posted @ 2021-04-09 15:46  jawide  阅读(166)  评论(0编辑  收藏  举报