Cyclic shifts - HackerEarth Solution


Bit Manipulation

Python Code:

t = int(input())

for i in range(t):
    e = input().split(" ")
    currrent = int(e[0])
    currrent = bin(currrent)
    currrent = currrent[2:]
    count = 0

    last = currrent

    while(True):
        if(len(currrent)!= 16):
            currrent = "0" + currrent
        else:
            break

    if(e[2] == "L"):
        last = currrent[:int(e[1])]
        currrent = currrent + last
        currrent = currrent[int(e[1]):]
    else:
        last = currrent[16 - int(e[1]) : ]
        currrent = last + currrent
        currrent = currrent[:16]

    for j in range(len(currrent)):
        count += int(currrent[len(currrent) - 1 - j]) * (2**j)

    print(count)


Comments

Submit
0 Comments
More Questions

1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad
189A - Cut Ribbon
1182A - Filling Shapes
82A - Double Cola
45A - Codecraft III
1242A - Tile Painting
1663E - Are You Safe
1663D - Is it rated - 3
1311A - Add Odd or Subtract Even
977F - Consecutive Subsequence
939A - Love Triangle
755A - PolandBall and Hypothesis
760B - Frodo and pillows
1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers