#jastro. 2026暑假CSP-J模拟赛04-T3 程老师的天文观测组
2026暑假CSP-J模拟赛04-T3 程老师的天文观测组
【文件读写】本题使用文件读写:输入文件
astro.in,输出文件astro.out。
时间限制:1000ms 内存限制:512MB
题目描述
程老师在天文台工作。天文台的巡天望远镜每晚要在观测区域内挑选目标星进行整夜跟踪,观测区域内一共亮着 n 颗候选星。这些候选星按亮度顺序编好了号,编号从 1 到 n,彼此不同,程老师对每一颗都做过详细的观测记录。候选星散布在天区的各个方位,有的靠近地平线,有的悬在头顶,望远镜每转向一颗新星都要重新对准一次,所以每晚的观测计划都会提前很久排定,一旦定下来就不能临时更改。每隔一段时间,程老师还会把历年排过的观测计划汇总起来,按不同的选法数量重新统计一遍,用来评估整个天区的利用情况。
每晚程老师都会从这 n 颗候选星中选出 k 颗,组成一个观测组。组成观测组时,只关心这一组里包含了哪几颗星,组内成员之间没有先后之分——先挑 1 号星再挑 2 号星,和先挑 2 号星再挑 1 号星,最终组成的都是同一个观测组。只有所选星星的集合不同,才算是两个不同的观测组。
k 的取值可以是 0 到 n 之间的任意整数。当 k = 0 时,观测组里一颗星也没有,这样的空组是允许存在的,而且只有这一种;当 k = n 时,观测组把所有候选星都包含了进去,这样的满组也只有一种。k 取中间的值时,观测组的种数各不相同。
程老师想知道,对给定的 n 和 k,他最多能组成多少个不同的观测组。这个问题在数学里有明确的答案:从 n 个不同的元素中取出 k 个、且不考虑取出顺序,取法的总数称为组合数,记为 C(n, k)。这个数目只由 n 和 k 两个数决定,与候选星的亮度、位置、观测时间以及挑选的先后顺序都没有关系——只要输入相同,答案就相同。程老师需要的,就是 C(n, k) 的精确数值。
结果要按标准十进制整数输出:不取模,不做四舍五入,不输出前导零。请写一个程序,读入 n 和 k,输出 C(n, k) 的精确值。
输入格式
一行两个整数 n, k,分别表示候选星总数与观测组包含的星星数。
输出格式
一行一个整数,表示 C(n, k) 的精确值。
数据范围
- 对于所有测试点:1 ≤ n ≤ 100,0 ≤ k ≤ n。
- 子任务分档如下:
| 测试点 | 特殊性质 | |
|---|---|---|
| 1 | 6 | 无 |
| 2 | 100 | |
| 3~4 | 20 | |
| 5~8 | 60 | |
| 9 | 100 | A |
| 10~20 | 无 |
特殊性质 A:。
样例输入 1
6 3
样例输出 1
20
样例输入 2
100 50
样例输出 2
100891344545564193334812497256
样例解释
样例 1:从 6 颗候选星中任选 3 颗组成观测组,一共 C(6,3) = 20 种选法。
- ID
- 697
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者
相关
在下列比赛中: