UVA10568 n Group k

题目描述

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

输入格式

![](https://cdn.luogu.com.cn/upload/vjudge_pic/UVA10568/8a590b904ad526e95ef9209412e2b1aff07fcac6.png)

输出格式

对于 `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$ 条询问指令。