题目翻译
X 教授要让他的学生做一个学期作业。他将把班级中 N 位学生分成若干小组,每小组有 K 人。如果无法完全平分,有且只有 1 个小组少于 K 人。
学生对 X 教授的分配不会有任何意见。但是由于方案太多,X 教授让你写一个程序帮他分配。有 3 种指令:
COUNT N K 表示你需要输出分组方案的总数。
GENERATE N K 表示你需要先输出分组方案的总数,再输出每一种分组方案。
END 表示输入结束。
所有分组方案都不分学生先后顺序。比如,ABC ACB BCA 等都视为同一种分组方案。
输入格式
1 次指令占 1 行。输入格式如上文描述。
输出格式
对于 COUNT N K ,输出占 1 行,为分组方案的总数。
对于 GENERATE N K ,输出占多行。第 1 行为分组方案的总数。接下来若干行中,输出每一种分组方案,1 种方案占 1 行。学生编号为英文字母表前 N 个大写字母。同一组学生的编号之间没有任何分隔,不同小组之间用 1 个半角空格分隔。应先使组内学生编号为字典序,再使各组之间为字典序。
数据范围
对于 100% 的数据:
- 对于
COUNT N K ,1≤N,K≤30,分组方案的总数在 64 位正整数范围内(即 C++ 的 unsigned long long 范围内)。
- 对于
GENERATE N K ,1≤N,K≤15,每次输出的行数不大于 10000,所有输出的行数之和不大于 30000。
- 最多有 1200 条询问指令。