Array 85. Дан массив A размера N и целое число K \((1 \leq K \leq 4, K < N)\). Осуществить циклический сдвиг элементов массива вправо на K позиций (при этом \(A_1\) перейдет в \(A_{K+1}\), \(A_2\) - в \(A_{K+2}\), ..., \(A_N\) - в \(A_K\)). Допускается использовать вспомогательный массив из 4 элементов.

Решение на Python 3

import random

K = random.randrange(1,5)
N = random.randrange(K+1,21)
##N = 6
##K = 1
print("K = ", K)
print("N = ", N)

a = [i+1 for i in range(N)]

##for i in range(0,N):
## a[i] = i

print("Array:\n",a)

print("Modified Array 1:\n", a[N-K:] + a[:N-K] )

b = []
for i in range(N-K,N) :
b.append(a[i])
for i in range(N-1,K-1,-1) :
a[i] = a[i-K]
for i in range(0,K) :
a[i] = b[i]
#a[0] = x

print("Modified Array 2:\n",a)