fork download
  1. #include <stdio.h>
  2. const int CHAR_BIT = 8;
  3. /*
  4. int problem2(int x, int n){
  5.  
  6.   int temp = x;
  7.   uint32_t mask;
  8.   int maskco;
  9.  
  10.   mask = 0xFFFFFFFF << n;
  11.   maskco = (mask | temp);
  12.  
  13. return (maskco) == x;
  14. }
  15. */
  16. int problem2_mj(int x, int n){
  17. unsigned int r;
  18. int const mask = (-x) >> sizeof(int) * CHAR_BIT - 1;
  19.  
  20. r = (-x + mask - (1 & mask)) ^ mask; // Converts +n -> n, -n -> (n-1)
  21. return !(((1 << (n-1)) - r) >> sizeof(int) * CHAR_BIT - 1);
  22. }
  23.  
  24. void test(int i) {
  25. int t;
  26. for(t = 1; t <= 10; ++t) {
  27. const int res = problem2_mj(i, t);
  28. printf("(%d, %d) -> %s\n", i, t, res ? "TRUE": "FALSE");
  29. if(res) {
  30. printf("\n");
  31. break;
  32. }
  33. }
  34. }
  35.  
  36. int main(void) {
  37. int i;
  38. for(i = -20; i <= 20; ++i) test(i);
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 2052KB
stdin
Standard input is empty
stdout
(-20, 1) -> FALSE
(-20, 2) -> FALSE
(-20, 3) -> FALSE
(-20, 4) -> FALSE
(-20, 5) -> FALSE
(-20, 6) -> TRUE

(-19, 1) -> FALSE
(-19, 2) -> FALSE
(-19, 3) -> FALSE
(-19, 4) -> FALSE
(-19, 5) -> FALSE
(-19, 6) -> TRUE

(-18, 1) -> FALSE
(-18, 2) -> FALSE
(-18, 3) -> FALSE
(-18, 4) -> FALSE
(-18, 5) -> FALSE
(-18, 6) -> TRUE

(-17, 1) -> FALSE
(-17, 2) -> FALSE
(-17, 3) -> FALSE
(-17, 4) -> FALSE
(-17, 5) -> FALSE
(-17, 6) -> TRUE

(-16, 1) -> FALSE
(-16, 2) -> FALSE
(-16, 3) -> FALSE
(-16, 4) -> FALSE
(-16, 5) -> TRUE

(-15, 1) -> FALSE
(-15, 2) -> FALSE
(-15, 3) -> FALSE
(-15, 4) -> FALSE
(-15, 5) -> TRUE

(-14, 1) -> FALSE
(-14, 2) -> FALSE
(-14, 3) -> FALSE
(-14, 4) -> FALSE
(-14, 5) -> TRUE

(-13, 1) -> FALSE
(-13, 2) -> FALSE
(-13, 3) -> FALSE
(-13, 4) -> FALSE
(-13, 5) -> TRUE

(-12, 1) -> FALSE
(-12, 2) -> FALSE
(-12, 3) -> FALSE
(-12, 4) -> FALSE
(-12, 5) -> TRUE

(-11, 1) -> FALSE
(-11, 2) -> FALSE
(-11, 3) -> FALSE
(-11, 4) -> FALSE
(-11, 5) -> TRUE

(-10, 1) -> FALSE
(-10, 2) -> FALSE
(-10, 3) -> FALSE
(-10, 4) -> FALSE
(-10, 5) -> TRUE

(-9, 1) -> FALSE
(-9, 2) -> FALSE
(-9, 3) -> FALSE
(-9, 4) -> FALSE
(-9, 5) -> TRUE

(-8, 1) -> FALSE
(-8, 2) -> FALSE
(-8, 3) -> FALSE
(-8, 4) -> TRUE

(-7, 1) -> FALSE
(-7, 2) -> FALSE
(-7, 3) -> FALSE
(-7, 4) -> TRUE

(-6, 1) -> FALSE
(-6, 2) -> FALSE
(-6, 3) -> FALSE
(-6, 4) -> TRUE

(-5, 1) -> FALSE
(-5, 2) -> FALSE
(-5, 3) -> FALSE
(-5, 4) -> TRUE

(-4, 1) -> FALSE
(-4, 2) -> FALSE
(-4, 3) -> TRUE

(-3, 1) -> FALSE
(-3, 2) -> FALSE
(-3, 3) -> TRUE

(-2, 1) -> FALSE
(-2, 2) -> TRUE

(-1, 1) -> TRUE

(0, 1) -> TRUE

(1, 1) -> FALSE
(1, 2) -> TRUE

(2, 1) -> FALSE
(2, 2) -> FALSE
(2, 3) -> TRUE

(3, 1) -> FALSE
(3, 2) -> FALSE
(3, 3) -> TRUE

(4, 1) -> FALSE
(4, 2) -> FALSE
(4, 3) -> FALSE
(4, 4) -> TRUE

(5, 1) -> FALSE
(5, 2) -> FALSE
(5, 3) -> FALSE
(5, 4) -> TRUE

(6, 1) -> FALSE
(6, 2) -> FALSE
(6, 3) -> FALSE
(6, 4) -> TRUE

(7, 1) -> FALSE
(7, 2) -> FALSE
(7, 3) -> FALSE
(7, 4) -> TRUE

(8, 1) -> FALSE
(8, 2) -> FALSE
(8, 3) -> FALSE
(8, 4) -> FALSE
(8, 5) -> TRUE

(9, 1) -> FALSE
(9, 2) -> FALSE
(9, 3) -> FALSE
(9, 4) -> FALSE
(9, 5) -> TRUE

(10, 1) -> FALSE
(10, 2) -> FALSE
(10, 3) -> FALSE
(10, 4) -> FALSE
(10, 5) -> TRUE

(11, 1) -> FALSE
(11, 2) -> FALSE
(11, 3) -> FALSE
(11, 4) -> FALSE
(11, 5) -> TRUE

(12, 1) -> FALSE
(12, 2) -> FALSE
(12, 3) -> FALSE
(12, 4) -> FALSE
(12, 5) -> TRUE

(13, 1) -> FALSE
(13, 2) -> FALSE
(13, 3) -> FALSE
(13, 4) -> FALSE
(13, 5) -> TRUE

(14, 1) -> FALSE
(14, 2) -> FALSE
(14, 3) -> FALSE
(14, 4) -> FALSE
(14, 5) -> TRUE

(15, 1) -> FALSE
(15, 2) -> FALSE
(15, 3) -> FALSE
(15, 4) -> FALSE
(15, 5) -> TRUE

(16, 1) -> FALSE
(16, 2) -> FALSE
(16, 3) -> FALSE
(16, 4) -> FALSE
(16, 5) -> FALSE
(16, 6) -> TRUE

(17, 1) -> FALSE
(17, 2) -> FALSE
(17, 3) -> FALSE
(17, 4) -> FALSE
(17, 5) -> FALSE
(17, 6) -> TRUE

(18, 1) -> FALSE
(18, 2) -> FALSE
(18, 3) -> FALSE
(18, 4) -> FALSE
(18, 5) -> FALSE
(18, 6) -> TRUE

(19, 1) -> FALSE
(19, 2) -> FALSE
(19, 3) -> FALSE
(19, 4) -> FALSE
(19, 5) -> FALSE
(19, 6) -> TRUE

(20, 1) -> FALSE
(20, 2) -> FALSE
(20, 3) -> FALSE
(20, 4) -> FALSE
(20, 5) -> FALSE
(20, 6) -> TRUE