#include <stdio.h>
int div3(int x){
const int t[]={0,0,0,1,1,1,2,2,2,3};
//int y = (x>>2) + (x>>4) + (x>>6); // max error is 12 of done one-line
int y = (x>>2) + (x>>4);
y+=y>>4;
int b = x - (y<<1) - y;
y+=(t[b]);
return y;
}
int main(void) {
for(int i=0;i<=255;i++){
int y = div3(i);
if(y!=i/3){
printf("%d vs %d at %d\n", y
, i
/3, i
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZGl2MyhpbnQgeCl7CgkJY29uc3QgaW50IHRbXT17MCwwLDAsMSwxLDEsMiwyLDIsM307CgkJLy9pbnQgeSA9ICh4Pj4yKSArICh4Pj40KSArICh4Pj42KTsgLy8gbWF4IGVycm9yIGlzIDEyIG9mIGRvbmUgb25lLWxpbmUKCQlpbnQgeSA9ICh4Pj4yKSArICh4Pj40KTsKCQl5Kz15Pj40OwoJCWludCBiID0geCAtICh5PDwxKSAtIHk7CgkJeSs9KHRbYl0pOwoJCXJldHVybiB5Owp9CgppbnQgbWFpbih2b2lkKSB7Cglmb3IoaW50IGk9MDtpPD0yNTU7aSsrKXsKCQlpbnQgeSA9IGRpdjMoaSk7CgkJaWYoeSE9aS8zKXsKCQkJcHJpbnRmKCIlZCB2cyAlZCBhdCAlZFxuIiwgeSwgaS8zLCBpKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQo=