HackerEarth Cyclic shifts problem solution YASH PAL, 31 July 2024 In this HackerEarth Cyclic shifts problem solution, You are given a number N represented as a binary representation of X = 16 bits. You are also given a number m and a character c (L or R). Determine a number M that is generated after cyclically shifting the binary representation of N by m positions either left if c = L or right if c = R. HackerEarth Cyclic shifts problem solution. #include<bits/stdc++.h>#define ll long long int#define X 16using namespace std;ll checkL(ll n, ll m){ ll val = (1<<m) - 1; int dif = X - m; val = val<<dif; ll front = n&val; front = front>>dif; val = (1<<dif) - 1; val = val&n; val = val<<m; return (val|front);}ll checkR(ll n, ll m){ int dif = X - m; ll val = (1<<dif) - 1; val = val<<m; ll front = n&val; front = front>>m; val = (1<<m) - 1; val = val&n; val = val<<dif; return (val|front);}int main(){ int t; cin>>t; assert(t >= 1 && t <= 10000); while(t--) { ll n,m; char ch; cin>>n>>m>>ch; assert(1 <= n && n <= 65535); assert(1 <= m && m <= 15); if(ch == 'R') cout<<checkR(n,m)<<endl; else cout<<checkL(n,m)<<endl; }} Second solution #include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1.5e5 + 14;int main(){ ios::sync_with_stdio(0), cin.tie(0); int t; cin >> t; while(t--){ int n, m; char d; cin >> n >> m >> d; string s = bitset<16>(n).to_string(); m %= s.size(); if(d == 'L') s = s.substr(m) + s.substr(0, m); else s = s.substr(s.size() - m) + s.substr(0, s.size() - m); cout << bitset<16> (s).to_ulong() << 'n'; }} coding problems