fork download
  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. combination-lock.
  3.  
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. 01 input-str PIC X(20).
  7.  
  8. 01 num-digits PIC 9(3) COMP.
  9.  
  10. 01 code-digits-area.
  11. 03 code-digits PIC 9(3) COMP
  12. OCCURS 3 TIMES.
  13.  
  14. 01 rotations PIC 9(5) COMP.
  15.  
  16. PROCEDURE DIVISION.
  17. ACCEPT input-str
  18. UNSTRING input-str DELIMITED BY SPACES INTO num-digits,
  19. code-digits (1), code-digits (2), code-digits (3)
  20.  
  21. COMPUTE rotations = num-digits * 3 + code-digits (1)
  22. + FUNCTION MOD(code-digits (1) - code-digits (2),
  23. num-digits)
  24. IF code-digits (2) = code-digits (3)
  25. ADD num-digits TO rotations
  26. ELSE
  27. COMPUTE rotations = rotations
  28. + FUNCTION MOD(code-digits (3) - code-digits(2),
  29. num-digits)
  30. END-IF
  31.  
  32. DISPLAY rotations
  33. .
  34. END PROGRAM combination-lock.
Success #stdin #stdout 0.01s 6168KB
stdin
5 1 2 3
stdout
00023