Задача ABACABA 

Абацабовский язык состоит из всех тех последовательностей букв A, B, C (разумеется, латиницей), в которых одна и та же буква повторяется не больше двух раз подряд. Все эти слова пронумерованы по правилам: сначала все однобуквенные, затем все двухбуквенные и т. д., а среди слов с одинаковым количеством букв — в словарном порядке, то есть сначала сравниваются первые буквы; если они одинаковы, то сравниваются вторые, и т. д. В частности, словами абацабовского языка с 1‑го по 47‑е являются A, B, C, AA, AB, AC, BA, BB, BC, CA, CB, CC, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC, BBA, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, AABA, AABB, AABC, AACA, AACB, AACC, ABAA, ABAB, ABAC, ABBA, ABBC. Напишите программу, выполняющую преобразование между буквенным и порядковым представлением слов абацабовского языка.

Технические условия. Программа ABACABA читает с клавиатуры либо целое строго положительное число, либо последовательность букв, образующих слово абацабовского языка. Программа должна вывести в первом случае слово абацабовского языка, имеющего такой номер, а во втором — порядковый номер введенного слова. Достаточно, чтобы программа умела работать со словами, номера которых не превосходят 1018.

Программа должна выводить только ответ, без каких-либо лишних символов, в т. ч. и пробелов. Числа должны начинаться с ненулевой цифры.

 

Пример 1

Пример 2

Ввод

AACC

Вывод

42

Ввод

935

Вывод

ABACABA

 

 

 

© LIKT 1998-2018