Binary Period (Codeforces 1342B)
Tags: Others, strings

Let's say string $$$s$$$ has period $$$k$$$ if $$$s_i = s_{i + k}$$$ for all $$$i$$$ from $$$1$$$ to $$$|s| - k$$$ ($$$|s|$$$ means length of string $$$s$$$) and $$$k$$$ is the minimum positive integer with this property.Some examples of a period: for $$$s$$$="0101" the period is $$$k=2$$$, for $$$s$$$="0000" the period is $$$k=1$$$, for $$$s$$$="010" the period is $$$k=2$$$, for $$$s$$$="0011" the period is $$$k=4$$$.You are given string $$$t$$$ consisting only of 0's and 1's and you need to find such string $$$s$$$ that:  String $$$s$$$ consists only of 0's and 1's;  The length of $$$s$$$ doesn't exceed $$$2 \cdot |t|$$$;  String $$$t$$$ is a subsequence of string $$$s$$$;  String $$$s$$$ has smallest possible period among all strings that meet conditions 1—3. Let us recall that $$$t$$$ is a subsequence of $$$s$$$ if $$$t$$$ can be derived from $$$s$$$ by deleting zero or more elements (any) without changing the order of the remaining elements. For example, $$$t$$$="011" is a subsequence of $$$s$$$="10101".

Input: The first line contains single integer $$$T$$$ ($$$1 \le T \le 100$$$) — the number of test cases.Next $$$T$$$ lines contain test cases — one per line. Each line contains string $$$t$$$ ($$$1 \le |t| \le 100$$$) consisting only of 0's and 1's.

Output: Print one string for each test case — string $$$s$$$ you needed to find. If there are multiple solutions print any one of them.

Note: In the first and second test cases, $$$s = t$$$ since it's already one of the optimal solutions. Answers have periods equal to $$$1$$$ and $$$2$$$, respectively.In the third test case, there are shorter optimal solutions, but it's okay since we don't need to minimize the string $$$s$$$. String $$$s$$$ has period equal to $$$1$$$.

Sample Inputs:
4
00
01
111
110

Sample Outputs:
00
01
11111
1010

Solution (Python):
t = int(input())
for _ in range(t):
    s = input()
    same = True
    sameD = s[0]
    for i in s:
        if i != sameD:
            same = False
    if same:
        print(s)
    else:
        v = [i % 2 for i in range(2 * len(s))]
        print(''.join(map(str, v)))

Solution (Python):
for _ in range(int(input())):
    t = input()
    n = len(t)
    if t.count('1') == n or t.count('0') == n:
        print(t, end='')
    else:
        for i in range(n - 1):
            if t[i] == t[i + 1]:
                alt = '1' if t[i] == '0' else '0'
                print(t[i] + alt, end='')
            else:
                print(t[i], end='')
        print(t[-1], end='')
    print()

Solution (Python):
n = int(input())
t = [list(input()) for _ in range(n)]
for elem in t:
    print(''.join(list(set(elem))) * len(elem))