UVA10568 n Group k
题目描述
### 题目翻译
X 教授要让他的学生做一个学期作业。他将把班级中 $N$ 位学生分成若干小组,每小组有 $K$ 人。如果无法完全平分,要求有且只有 $1$ 个小组少于 $K$ 人。
学生对 X 教授的分配不会有任何意见。但是由于方案太多,X 教授让你写一个程序帮他分配。有 $3$ 种指令:
- `COUNT N K` 表示你需要输出分组方案的总数。
- `GENERATE N K` 表示你需要先输出分组方案的总数,再输出每一种分组方案。
- `END` 表示输入结束。
所有分组方案都不分学生先后顺序。比如,`ABC` `ACB` `BCA` 等都视为同一种分组方案。
输入格式

输出格式
对于 `COUNT N K` ,输出占 $1$ 行,为分组方案的总数。
对于 `GENERATE N K` ,输出占多行。第 $1$ 行为分组方案的总数。接下来若干行中,输出每一种分组方案,$1$ 种方案占 $1$ 行。学生编号为英文字母表前 $N$ 个大写字母。同一组学生的编号之间没有任何分隔,不同小组之间用 $1$ 个半角空格分隔。应先使组内学生编号为字典序,再使各组之间为字典序。
说明/提示
对于 $100 \%$ 的数据:
- 对于 `COUNT N K` ,$1\le N,K \le 30$,分组方案的总数在 $64$ 位正整数范围内(即 C++ 的 `unsigned long long` 范围内)。
- 对于 `GENERATE N K` ,$1\le N,K \le 15$,每次输出的行数不大于 $10000$,所有输出的行数之和不大于 $30000$。
- 最多有 $1200$ 条询问指令。