fork download
  1. /*
  2. プログラミングのお題スレ Part13
  3. //mevius.5ch.net/test/read.cgi/tech/1549160513/675
  4.  
  5. 675 名前:デフォルトの名無しさん[sage] 投稿日:2019/03/14(木) 18:59:16.90 ID:38t26SL0
  6. お題: 3つの数の最小値を1回の分岐で決めろ!
  7. */
  8. class Ideone
  9. {
  10. public static void main(String[] args)
  11. {
  12. System.out.println(min(1, 2, 3));
  13. System.out.println(min(1, 3, 2));
  14. System.out.println(min(2, 1, 3));
  15. System.out.println(min(2, 3, 1));
  16. System.out.println(min(3, 1, 2));
  17. System.out.println(min(3, 2, 1));
  18.  
  19. System.out.println();
  20.  
  21. System.out.println(min(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
  22. System.out.println(min(Integer.MIN_VALUE, Integer.MAX_VALUE, 0));
  23. System.out.println(min(0, Integer.MIN_VALUE, Integer.MAX_VALUE));
  24. System.out.println(min(0, Integer.MAX_VALUE, Integer.MIN_VALUE));
  25. System.out.println(min(Integer.MAX_VALUE, Integer.MIN_VALUE, 0));
  26. System.out.println(min(Integer.MAX_VALUE, 0, Integer.MIN_VALUE));
  27.  
  28. System.out.println();
  29.  
  30. // あうとー
  31. System.out.println(min_error(Integer.MIN_VALUE, 0, Integer.MAX_VALUE));
  32. System.out.println(min_error(Integer.MIN_VALUE, Integer.MAX_VALUE, 0));
  33. System.out.println(min_error(0, Integer.MIN_VALUE, Integer.MAX_VALUE));
  34. System.out.println(min_error(0, Integer.MAX_VALUE, Integer.MIN_VALUE));
  35. System.out.println(min_error(Integer.MAX_VALUE, Integer.MIN_VALUE, 0));
  36. System.out.println(min_error(Integer.MAX_VALUE, 0, Integer.MIN_VALUE));
  37. }
  38.  
  39. static int min(int a, int b, int c)
  40. {
  41. a ^= (a ^ b) * ((long) b - a >>> 63);
  42. a ^= (a ^ c) * ((long) c - a >>> 63);
  43. return a;
  44. }
  45.  
  46. static int min_error(int a, int b, int c)
  47. {
  48. a ^= (a ^ b) * (b - a >>> 31);
  49. a ^= (a ^ c) * (c - a >>> 31);
  50. return a;
  51. }
  52. }
Success #stdin #stdout 0.04s 2184192KB
stdin
Standard input is empty
stdout
1
1
1
1
1
1

-2147483648
-2147483648
-2147483648
-2147483648
-2147483648
-2147483648

0
0
2147483647
-2147483648
0
-2147483648