#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。
  • 子任务分档如下:
测试点 nn \le 特殊性质
1 6
2 100
3~4 20
5~8 60
9 100 A
10~20

特殊性质 A:k2k \le 2

样例输入 1

6 3

样例输出 1

20

样例输入 2

100 50

样例输出 2

100891344545564193334812497256

样例解释

样例 1:从 6 颗候选星中任选 3 颗组成观测组,一共 C(6,3) = 20 种选法。

难度 普及+/提高-
通过率 100%
尝试 2
已通过 2
ID
697
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-J模拟赛 第4场