fork download
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int digs(const char * x)
  7. {
  8. int cnt = 0;
  9. for(;*x;++x)
  10. if (isdigit(*x)) ++cnt;
  11. return cnt;
  12. }
  13.  
  14. #define check(x) cout << left << setw(40) << #x \
  15.   << " = " << ( x ) << " // " << right \
  16.   << setw(2) << digs(#x) << " digits\n";
  17.  
  18. int main()
  19. {
  20. check( (1<<11)+~(11<<1)+~1 );
  21. check( (1<<11)-((11+1)<<1)-1 );
  22. check( (2<<(2<<2)<<2)+~22-2 );
  23. check( (22^(((2<<((2<<2)+2+2))-2)>>2))-2 );
  24. check( ((33&~3)<<(3+3))+~(3<<3) );
  25. check( ((33^((33+3)<<3))<<3)-33 );
  26. check( ((((4+4)<<4)-4)<<4)+~4+44 );
  27. check( (444>>4)^((((4+4)<<4)<<4)-4) );
  28. check( -~5-~(((5-~5)|55)<<5) );
  29. check( ((55+5+5)<<5)-((55+5)^(5)) );
  30. check( (((66|6)+~6)<<(~6+6+6))-~6 );
  31. check( (((((6<<6)-6)|(6<<6))<<6)-6)>>(6&(6+6)) );
  32. check( ((77-7-7)<<(77&7))+7 );
  33. check( ~8+~8-8-~(8<<8) );
  34. check( ((((8<<8)<<8)-8)>>8)-8-8-8 );
  35. check( (9<<9)^((9<<9)+999) );
  36.  
  37. cout << endl;
  38.  
  39. check( ~1-23+((4-~5+6)<<7) );
  40. check( (123<<4)+(56+7)&~8 );
  41. check( (1-234)^((~5-((6|7)<<8))+~9) );
  42. check( (~1-23)^(~4|5)^(((6+7+~8)<<9)+~0) );
  43.  
  44. cout << endl;
  45.  
  46. check( (9+~(8<<7))^(~(65<<4)) );
  47. check( 987+(65<<4)+~3 );
  48. check( 987-~(65<<4)-3-2 );
  49. check( ~(9<<8)+7+6+~5+4321 );
  50. check( ~9+~8+((765|432)<<1) );
  51. check( ~9^(~876&(((54<<3<<2)^~1)+~0)) );
  52.  
  53. }
  54.  
Success #stdin #stdout 0.01s 5516KB
stdin
Standard input is empty
stdout
(1<<11)+~(11<<1)+~1                      = 2023   //  7 digits
(1<<11)-((11+1)<<1)-1                    = 2023   //  8 digits
(2<<(2<<2)<<2)+~22-2                     = 2023   //  7 digits
(22^(((2<<((2<<2)+2+2))-2)>>2))-2        = 2023   // 10 digits
((33&~3)<<(3+3))+~(3<<3)                 = 2023   //  7 digits
((33^((33+3)<<3))<<3)-33                 = 2023   //  9 digits
((((4+4)<<4)-4)<<4)+~4+44                = 2023   //  8 digits
(444>>4)^((((4+4)<<4)<<4)-4)             = 2023   //  9 digits
-~5-~(((5-~5)|55)<<5)                    = 2023   //  6 digits
((55+5+5)<<5)-((55+5)^(5))               = 2023   //  9 digits
(((66|6)+~6)<<(~6+6+6))-~6               = 2023   //  8 digits
(((((6<<6)-6)|(6<<6))<<6)-6)>>(6&(6+6))  = 2023   // 10 digits
((77-7-7)<<(77&7))+7                     = 2023   //  8 digits
~8+~8-8-~(8<<8)                          = 2023   //  5 digits
((((8<<8)<<8)-8)>>8)-8-8-8               = 2023   //  8 digits
(9<<9)^((9<<9)+999)                      = 2023   //  7 digits

~1-23+((4-~5+6)<<7)                      = 2023   //  7 digits
(123<<4)+(56+7)&~8                       = 2023   //  8 digits
(1-234)^((~5-((6|7)<<8))+~9)             = 2023   //  9 digits
(~1-23)^(~4|5)^(((6+7+~8)<<9)+~0)        = 2023   // 10 digits

(9+~(8<<7))^(~(65<<4))                   = 2023   //  6 digits
987+(65<<4)+~3                           = 2023   //  7 digits
987-~(65<<4)-3-2                         = 2023   //  8 digits
~(9<<8)+7+6+~5+4321                      = 2023   //  9 digits
~9+~8+((765|432)<<1)                     = 2023   //  9 digits
~9^(~876&(((54<<3<<2)^~1)+~0))           = 2023   // 10 digits