Решение задачи "K-я красивая строка" с Codeforces

Без пояснения   Просмотров: 23


Для заданного целого числа n (n>2) выпишем все строки длины n, которые содержат в себе n−2 буквы 'a' и две буквы 'b', в лексикографическом (алфавитном) порядке.

Напомним, что строка s длины n лексиографически меньше строки t длины n, если существует такое i (1≤i≤n), что si
Например, если n=5, то получатся следующие строки (их порядок важен):

aaabb
aabab
aabba
abaab
ababa
abbaa
baaab
baaba
babaa
bbaaa
Легко показать, что такой список строк будет содержать ровно n⋅(n−1)2 строк.

Вам задано n (n>2) и k (1≤k≤n⋅(n−1)2). Выведите k-ю строку из списка.

Код

#include<bits/stdc++.h>
using namespace std;

int main(){
    int t,a,b;
    cin >> t;
    while(t--){
        cin >> a >> b;
        string s(a,'a');
        int p =2;
        while(b > p-1)
        {
            b = b - (p - 1);
            p++;
         }
        s[a-p]='b';
        s[a-b]='b';
        cout << s << endl;
    }
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться