#include <stdio.h> #include <stdint.h> uint16_t rotateright(int n,uint16_t reg) { int arr[16],num=0; for(int j=0;j<16;j++) { arr[j]=(reg>>j)&1; } while(n) { int temp=arr[0]; for(int i=1;i<=15;i++) { arr[i-1]=arr[i]; } arr[15]=temp; n--; } for(int i=15;i>=0;i--) { if(arr[i]==1) num |=1<<i; else if (arr[i]==0) num &=~(1<<i); } return num; } uint8_t is_circular_match(uint16_t reg, uint16_t target) { for(int i=1;i<=15;i++) { if(rotateright(i,reg)==target) { return 1; } } return 0; } int main() { uint16_t reg, target; scanf("%hu %hu", ®, &target); printf("%hhu", is_circular_match(reg, target)); return 0; }
Test Cases
Test Results
Input
45056 11
Expected Output
1