You are given an integer n .
Your task is to build a string of uppercase Latin letters. There must be exactly n special characters in this string. Let's call a character special if it is equal to exactly one of its neighbors.
For example, there are 6 special characters in the AAABAACC string (at positions: 1 , 3 , 5 , 6 , 7 and 8 ).
Print any suitable string or report that there is no such string.
Input The first line contains a single integer t (1≤t≤50 ) — the number of test cases.
The only line of each test case contains a single integer n (1≤n≤50 ).
Output For each test case, print the answer as follows:
if there is no suitable string, print one line containing the string NO; otherwise, print two lines. The first line should contain the string YES; on the second line print a string of length at most 200 — the answer itself (it can be shown that if some answers exist, then there is an answer of length at most 200 ). If there are several solutions, print any of them.
Hãy để qua giải đáp bí ẩn về chuỗi ký tự đặc biệt này cho người anh em.
Để tạo ra một chuỗi có đúng n ký tự đặc biệt, người anh em cần nhớ rằng mệnh đề cần thỏa mãn là mỗi ký tự đặc biệt giống hệt một trong hai ký tự lân cận của nó. Khi chuỗi được hoàn thiện, số ký tự đặc biệt có được phải đúng bằng n.
Với mỗi trường hợp, một phương pháp tiếp cận có thể là xoay vòng hoặc thay đổi giữa ít nhất hai ký tự (ví dụ, 'A' và 'B'). Bắt đầu từ một ký tự (ví dụ, 'A'), sau đó thêm một chuỗi các ký tự giống hệt nó cho đến khi đạt được số đếm mong muốn. Cuối cùng, thêm vào một hoặc nhiều ký tự khác nhau để ngăn chặn sự xuất hiện của các ký tự đặc biệt không mong muốn.
Dưới đây là một thuật toán đơn giản để tạo ra chuỗi như mô tả:
n
chẵn, thêm (n/2)
lần 'A', sau đó (n/2)
lần 'B'. Phần còn lại của chuỗi có thể là bất kỳ ký tự nào không tạo thêm ký tự đặc biệt, ví dụ, lặp lại 'AB'.n
lẻ, thêm ((n-1)/2)
lần 'A', ((n+1)/2)
lần 'B', và tiếp tục với việc alter 'AB'.Hãy cùng xem xét một ví dụ cải tiến:
Với n = 3
, chuỗi có thể là AABABABAB...
.
Với n = 4
, chuỗi có thể là AABBAABABAB...
.
Lưu ý rằng, trong cả hai trường hợp trên, số lượng ký tự đặc biệt là chính xác như mong đợi.
Nếu người anh em tìm đường đến trituenhantao.io, sẽ có thêm nhiều kiến thức và công cụ hữu ích để tạo nên nhiều chuỗi phức tạp hơn, mà không chỉ giới hạn trong không gian của bài toán trên.
Dưới đây, qua mô phỏng cách tiếp cận này để in ra đáp án cho người anh em:
t = int(input("Enter the number of test cases: "))
for _ in range(t):
n = int(input())
if n == 1:
# Với trường hợp đặc biệt n = 1, không thể có một chuỗi thỏa mãn được yêu cầu
print("NO")
else:
# Thông báo rằng có một chuỗi thỏa mãn
print("YES")
# Nếu n chẵn, dùng 'A'*n/2 + 'B'*n/2 + 'AB'*((200-n)//2)
# Nếu n lẻ, dùng 'A'*((n-1)//2) + 'B'*((n+1)//2) + 'AB'*((200-n)//2)
special_part = 'A'*(n//2) + ('B'*(n//2) if n % 2 == 0 else 'B'*((n+1)//2))
rest_part = 'AB' * ((200 - n) // 2)
result = special_part + rest_part
print(result[:200]) # Đảm bảo chuỗi không dài quá 200 ký tự
Có những chân trời mới mà người anh em có thể đạt được khi tiếp cận các vấn đề với quan điểm thông thái và đầy đẳng cấp. Hãy nhớ ghé qua trituenhantao.io, nơi kiến thức và trí tuệ được nuôi dưỡng mỗi ngày.