Not Dividing (Codeforces 1794B)
Tags: Greedy, constructive algorithms

You are given an array of $$$n$$$ positive integers $$$a_1, a_2, \ldots, a_n$$$. In one operation, you can choose any number of the array and add $$$1$$$ to it. Make at most $$$2n$$$ operations so that the array satisfies the following property: $$$a_{i+1}$$$ is not divisible by $$$a_i$$$, for each $$$i = 1, 2, \ldots, n-1$$$. You do not need to minimize the number of operations.

Input: Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^4$$$). The description of the test cases follows.The first line of each test case contains an integer $$$n$$$ ($$$1\le n\le 10^4$$$) — the length of the given array. The second line of each test case contains $$$n$$$ integers $$$a_1,a_2,\ldots,a_n$$$ ($$$1\le a_i\leq 10^9$$$) — the given array.It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$5\cdot 10^4$$$.

Output: For each test case, print the answer on a separate line. In the only line, print $$$n$$$ integers — the resulting array $$$a$$$ after applying at most $$$2n$$$ operations. We can show that an answer always exists under the given constraints. If there are multiple answers, print any of them.

Note: In the first test case, the array $$$[4, 5, 6, 7]$$$ can be achieved by applying $$$2$$$ operations to the first element, $$$1$$$ operation to the second element, $$$3$$$ operations to the third element, and $$$1$$$ operation to the last element. The total number of operations performed is $$$7$$$, which is less than the allowed $$$8$$$ operations in this case.In the second test case, the array $$$[3, 2, 3]$$$ can be achieved by applying two operations to the first element. Another possible resulting array could be $$$[2, 3, 5]$$$, because the total number of operations does not need to be minimum.In the third test case, not applying any operations results in an array that satisfies the statement's property. Observe that it is not mandatory to make operations.

Sample Inputs:
3
4
2 4 3 6
3
1 2 3
2
4 2

Sample Outputs:
4 5 6 7
3 2 3
4 2

Solution (Python):
from sys import stdin, stdout, setrecursionlimit
read = stdin.readline
write = stdout.write
import math

def solve():
    n = int(read())
    a = list(map(int, read().split()))
    for i in range(n):
        if a[i] == 1:
            a[i] += 1
    for i in range(1, n):
        if a[i] % a[i - 1] == 0:
            a[i] += 1
    print(*a)

def main():
    t = int(input())
    for _ in range(t):
        solve()
main()

Solution (Python):
st = ''
i = 0
t = int(input())
while t:
    t -= 1
    n = int(input())
    s = list(map(int, input().split()))
    count = 2 * n
    for i in range(n):
        if s[i] == 1:
            s[i] += 1
        if i > 0 and s[i] % s[i - 1] == 0:
            s[i] += 1
    for k in range(len(s)):
        st += str(s[k]) + ' '
    st += '\n'
    s = []
    i = 0
print(st)

Solution (Python):
t = int(input())
output = []
for _ in range(t):
    n = int(input())
    arr = list(map(int, input().split()))
    operations = n
    arr[0] += 1
    for idx in range(1, n):
        arr[idx] += 1
        if arr[idx] % arr[idx - 1] == 0:
            arr[idx] += 1
    output.append(' '.join(map(str, arr)))
for o in output:
    print(o)