#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;
}
Input
45056 11
Expected Output
1