Олимпиадный тренинг

Задача . B. Построить строку


Задача

Темы: Конструктив *900

Вам даны три целых положительных числа \(n\), \(a\) и \(b\). Вам хочется построить такую строку \(s\) длины \(n\), состоящую из строчных букв латинского алфавита, что каждая подстрока длины \(a\) содержит ровно \(b\) различных букв. Гарантируется, что ответ существует.

Вам нужно ответить на \(t\) независимых наборов тестовых данных.

Напомним, что подстрокой строки \(s[l \dots r]\) называется строка \(s_l, s_{l+1}, \dots, s_{r}\), длина которой равна \(r - l + 1\). В этой задаче вам интересны только подстроки длины \(a\).

Входные данные

Первая строка теста содержит одно целое число \(t\) (\(1 \le t \le 2000\)) — количество наборов тестовых данных. Затем следуют \(t\) наборов тестовых данных.

Единственная строка каждого набора содержит три разделенных пробелами целых числа \(n\), \(a\) и \(b\) (\(1 \le a \le n \le 2000, 1 \le b \le \min(26, a)\)), где \(n\) — длина необходимой строки, \(a\) — длина подстроки, а \(b\) — требуемое количество различных букв в каждой подстроке длины \(a\).

Гарантируется, что сумма чисел \(n\) по всем наборам тестовых данных не превосходит \(2000\) (\(\sum n \le 2000\)).

Выходные данные

Для каждого набора тестовых данных выведите ответ на него — такую строку \(s\) длины \(n\), состоящую из строчных букв латинского алфавита, что каждая подстрока длины \(a\) содержит ровно \(b\) различных букв. Если ответов несколько, выведите любой из них. Гарантируется, что ответ существует.

Примечание

В первом наборе тестовых данных примера посмотрим на все подстроки длины \(5\):

  • «tleel» — в ней три различных буквы \(3\),
  • «leelt» — в ней три различных буквы \(3\),
  • «eelte» — в ней три различных буквы \(3\).

Примеры
Входные данныеВыходные данные
1 4
7 5 3
6 1 1
6 6 1
5 2 2
tleelte
qwerty
vvvvvv
abcde

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя