역도를 할 때 여러 접시를 막대에 부착하여 특정 무게를 만들고 싶습니다.
다음과 같은 번호판이 있습니다.
- 1kg 6 장
- 각각 2.5kg 6 장
- 각 5kg 6 장
- 각각 10kg 6 장
바 자체의 무게는 10kg입니다.
플레이트는 한 쌍으로 만 부착 할 수 있습니다. 막대의 각 끝에 부착되어 있고 두 끝의 배치는 완전히 대칭이어야합니다 (예 : 한쪽 끝에 2 개의 5kg 플레이트를 부착하고 한쪽에 10kg 플레이트를 부착) 다른 쪽 끝은 안전상의 이유로 금지되어 있습니다).
주어진 총 중량을 얻기 위해 사용해야하는 각 종류의 플레이트 수를 알려주는 프로그램이나 기능을 만드십시오. 입력은 11보다 큰 정수입니다. 출력은 4 숫자의 목록 / 배열 / 문자열입니다. 기존 플레이트를 결합하여 목표 무게를 얻는 것이 불가능한 경우 0 / 빈 배열, 유효하지 않은 문자열을 출력하고 예외 또는 그와 유사한 것을 던져보십시오.
여러 솔루션이있는 경우 코드는 하나만 출력해야합니다 (사용자가 다른 것을 너무 바쁘게 선택하지 마십시오).
테스트 사례 :
12 -> [2 0 0 0] - 2 plates of 1 kg plus the bar of 10 kg
13 -> [0 0 0 0] - a special-case output that means "impossible"
20 -> [0 0 2 0] - 2 plates of 5 kg + bar
20 -> [0 4 0 0] - a different acceptable solution for the above
21 -> [6 2 0 0] - 6 plates of 1 kg + 2 plates of 2.5 kg + bar
28 -> [0 0 0 0] - impossible
45 -> [0 2 6 0] - a solution for a random number in range
112 -> [2 4 6 6] - a solution for a random number in range
121 -> [6 6 6 6] - maximal weight for which a solution is possible
코드가 숫자를 반대 순서로 (굵은 판에서 밝은 것까지) 출력하는 경우 혼동을 피하기 위해 명시 적으로 지정하십시오.