#include <stdio.h>
#include <stdint.h>
uint16_t mul(uint16_t a, uint16_t b) {
uint16_t res = 0;
if (!a || !b) {
return 0;
}
int i = 0;
while (i < 16) {
if (a & (1 << i)) {
res += b;
}
b <<= 1;
i++;
}
return res;
}
void example_mul(uint16_t a, uint16_t b) {
printf("%d*%d = %d\n", a
, b
, mul
(a
, b
)); }
int main() {
example_mul(5, 6);
example_mul(7, 4);
example_mul(3, 21);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCnVpbnQxNl90IG11bCh1aW50MTZfdCBhLCB1aW50MTZfdCBiKSB7CiAgdWludDE2X3QgcmVzID0gMDsKCiAgaWYgKCFhIHx8ICFiKSB7CiAgICByZXR1cm4gMDsKICB9CgogIGludCBpID0gMDsKICB3aGlsZSAoaSA8IDE2KSB7CiAgICBpZiAoYSAmICgxIDw8IGkpKSB7CiAgICAgIHJlcyArPSBiOwogICAgfQogICAgYiA8PD0gMTsKICAgIGkrKzsKICB9CiAgcmV0dXJuIHJlczsKfQoKdm9pZCBleGFtcGxlX211bCh1aW50MTZfdCBhLCB1aW50MTZfdCBiKSB7CiAgcHJpbnRmKCIlZColZCA9ICVkXG4iLCBhLCBiLCBtdWwoYSwgYikpOwp9CgppbnQgbWFpbigpIHsKICBleGFtcGxlX211bCg1LCA2KTsKICBleGFtcGxlX211bCg3LCA0KTsKICBleGFtcGxlX211bCgzLCAyMSk7CiAgcmV0dXJuIDA7Cn0K