#include <stdio.h>
#include <stdint.h>
#define bit0 (1<<0)
#define bit1 (1<<1)
#define bit2 (1<<2)
#define bit3 (1<<3)
#define bit4 (1<<4)
#define bit5 (1<<5)
#define bit6 (1<<6)
#define bit7 (1<<7)
uint16_t build_register(uint8_t enable, uint8_t mode, uint8_t speed) {
uint16_t register_value = 0;
if(enable == 1)
{
register_value |= bit0;
}
else
{
}
if(mode == 0)
{
}
else if(mode == 1)
{
register_value |= bit1;
}
else if(mode == 2)
{
register_value |= bit2;
}
else
{
register_value |= bit1;
register_value |= bit2;
}
if(speed == 0)
{
}
else if(speed ==1)
{
register_value |= bit3;
}
else if(speed == 2)
{
register_value |= bit4;
}
else if(speed == 3)
{
register_value |= bit3;
register_value |= bit4;
}
else if(speed == 4)
{
register_value |= bit5;
}
else if(speed == 5)
{
register_value |= bit5;
register_value |= bit3;
}
else if(speed == 6)
{
register_value |= bit5;
register_value |= bit4;
}
else
{
register_value |= bit5;
register_value |= bit4;
register_value |= bit3;
}
return register_value;
}
int main() {
uint8_t enable, mode, speed;
scanf("%hhu %hhu %hhu", &enable, &mode, &speed);
uint16_t reg = build_register(enable, mode, speed);
printf("%u", reg);
return 0;
}
Input
1 2 4
Expected Output
37