Logo
(追記) (追記ここまで)

19801번 - Обработка строки 스페셜 저지다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 512 MB11000.000%

문제

В новых процессорах, проектируемых корпорацией MBI, для работы со строками выделен отдельный сопроцессор. Этому сопроцессору можно передать строку, состоящую из строчных символов латинского алфавита, и программу, описывающую обработку строки. После этого процессор задумается и, через долю секунды, вернет результат обработки строки.

Работа еще не завершена, поэтому пока что он умеет обрабатывать строки только одним способом. Строка, которую ему передают на ввод, должна состоять из 2ドル^k$ символов, а программа обработки этой строки --- из 2ドル^k - 1$ чисел, каждое из которых является нулем или единицей.

Если строка, поданная на вход сопроцессору, состоит из одного символа, то результат обработки равен этой же строке. Если строка длиннее, то выполняются следующие действия.

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

Так, например, если на вход сопроцессору подана строка <<abcd>> и программа $(0, 1, 1),ドル то результатом обработки будет строка <<dcab>>.

Вам поступило предложение принять участие в его тестировании. Отказаться от такого лестного предложения вы не смогли, поэтому теперь вам необходимо научиться составлять программу для сопроцессора, с помощью которой он преобразует строку $S$ в строку $T,ドル или же определять, что такой программы не существует.

입력

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

Первая строка описания очередного случая содержит строку $S,ドル состоящую только из строчных букв латинского алфавита. Длина строки $S$ равна 2ドル^k,ドル где 1ドル \le k \le 16$. Вторая строка описания очередного случая содержит строку $T,ドル также состоящую только из строчных букв латинского алфавита. Длина строки $T$ равна длине строки $S$.

Суммарная длина всех строк $S$ в одном входном файле не превышает 100ドル,000円$.

출력

Для каждого случая в очередной строке выходного файла слово <<Yes>>, если программа для сопроцессора, преобразовывающая строку $S$ в строку $T$ существует, и <<No>> в противном случае.

Если ответ <<Yes>>, в следующей строке выведите 2ドル^k - 1$ чисел, разделенных пробелами --- программу, которую для этого преобразования необходимо передать сопроцессору. Если таких программ несколько --- выведите любую.

제한

예제 입력 1

2
abacabab
baababca
abacabab
bbaaabca

예제 출력 1

Yes
0 1 0 1 0 0 1
No

힌트

출처

Olympiad > Russian Olympiad in Informatics > Russia High School Programming Contest > Russia High School Programming Contest 2012 G번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /