1 条题解
-
0
1. 理解问题
我们考虑一个 n 维立方体(超立方体),问它包含多少个 m 维“基础图形”(即 m 维面)。
已知:
- 0 维基础图形:点(顶点)
- 1 维基础图形:边(线段)
- 2 维基础图形:面(正方形)
- 3 维基础图形:立方体
- ……
2. 从低维例子找规律
n=2(正方形)
- m=0(点):4 个顶点 →
- m=1(边):4 条边 →
- m=2(面):1 个面 →
n=3(立方体)
- m=0(点):8 个顶点 →
- m=1(边):12 条边 →
- m=2(面):6 个面 →
- m=3(体):1 个立方体 →
3. 一般公式
一个 n 维立方体 是由所有坐标 组成的,其中 。
一个 m 维面 可以通过以下方式得到:
- 从 n 个维度中选出 m 个“自由维度”,这些维度可以在区间 [0,1] 中连续变化(形成 m 维立方体)。
- 剩下的 n-m 个维度固定为 0 或 1(确定这个 m 维面的位置)。
步骤:
- 选择哪 m 个维度是自由的: 种选法。
- 对于 n-m 个固定维度,每个可以固定为 0 或 1: 种固定方式。
因此,m 维面的个数为:
4. 验证特例
- :(顶点数) ✅
- :(整个 n 维立方体) ✅
- :(边数) ✅
与已知结论一致。
5. 模运算与实现
我们需要对 , 进行快速计算,模 。
步骤:
- 预处理阶乘 和阶乘的逆元 ,范围 ,。
- 组合数计算:
- 计算 用快速幂。
- 对于每个询问,输出:
6. 时间复杂度
- 预处理阶乘与逆元:
- 每个询问:(快速幂)或 (若预处理 2 的幂)
- 总复杂度: 或 (预处理幂)
- 1
信息
- ID
- 4801
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者