Check whether all the rotations of a given number is greater than or equal to the given number or not

Given an integer x, the task is to find if every k-cycle shift on the element produces a number greater than or equal to the same element.
A k-cyclic shift of an integer x is a function that removes the last k digits of x and inserts them in its beginning.
For example, the k-cyclic shifts of 123 are 312 for k=1 and 231 for k=2. Print Yes if the given condition is satisfied else print No.


Input: x = 123
Output : Yes
The k-cyclic shifts of 123 are 312 for k=1 and 231 for k=2.
Both 312 and 231 are greater than 123.

Input: 2214
Output: No
The k-cyclic shift of 2214 when k=2 is 1422 which is smaller than 2214

Approach: Simply find all the possible k cyclic shifts of the number and check if all are greater than the given number or not.

Below is the implementation of the above approach:





# Python3 implementation of the approach
def CheckKCycles(n, s):
    ff = True
    for i in range(1, n):
        # Splitting the number at index i 
        # and adding to the front
        x = int(s[i:] + s[0:i])
        # Checking if the value is greater than 
        # or equal to the given value
        if (x >= int(s)):
        ff = False
    if (ff):
n = 3
s = "123"
CheckKCycles(n, s)




My Personal Notes arrow_drop_up