#include <stdio.h>
typedef struct
{
unsigned short reg;
} ConfigRegister;
int validate_config(ConfigRegister *cfg)
{
// Write logic using pointer access
int k = 0;
int i = 0;
while (k < 4)
{
if (k == 0)
{
if ((cfg->reg >> i) & 1)
{
i++;
k++;
}
else
{
return 0;
}
}
if (k == 1)
{
i++;
k++;
}
if (k == 2)
{
if (((cfg->reg >> i) & 3) == 3)
{
return 0;
}
else
{
i = i + 2;
k++;
}
}
if (k == 3)
{
int temp;
for (int j = i; j < 16; j++)
{
temp = (cfg->reg >> j) | 0;
if (temp)
{
return 0;
}
}
return 1;
}
}
return 0;
}
int main()
{
ConfigRegister cfg;
scanf("%hx", &cfg.reg);
int result = validate_config(&cfg);
printf("%d", result);
return 0;
}
Input
0005
Expected Output
1