내 주머니에 $ 15가 있습니다. 마찬가지로, 나는 변화를주지 않는 가게에있다. 탐색하는 동안 $ 10 (세금 포함)의 비용이 드는 항목을 발견했습니다. 돈을 잃지 않고 그 품목을 살 수 있습니까?
이 경우 대답은 '예'입니다. $ 15가 어떻게 나뉘어 있든지 (10과 1, 5, 3, 5, 또는 다른 것), 나는 항상 정확한 $ 10를 가질 것입니다.
두 번째 예로, 주머니에 $ 0.16가 있습니다. 정확히 어떤 다른 금액의 돈을 지불해야합니까?
Possible Divisions:
0.01, 0.05, 0.10
0.01, 0.05 x 3
0.01 x 16
Guaranteed Exact Change:
0.01, 0.05, 0.06, 0.10, 0.11, 0.15, 0.16
주머니에 $ 0.27가 있으면 어떻게합니까?
Possible Divisions:
0.01 x 2, 0.25
0.01 x 2, 0.05, 0.10 x 2
0.01 x 2, 0.05 x 3, 0.10
0.01 x 2, 0.05 x 5
0.01 x 27
Guaranteed Exact Change:
0.01, 0.02, 0.25, 0.26, 0.27
위의 경우에, 나는 항상 완벽한 변화를 가질 수있는 돈이 거의 없었습니다.
당신의 작업
A) 정수 금액과 B) 가능한 교파 목록을 입력으로 사용하고 내가 완벽하게 변경해야 할 금액 목록을 출력하는 가장 짧은 프로그램 (또는 명명 된 함수)을 작성하십시오. 입력은 STDIN 또는 프로그램 또는 함수의 인수 일 수 있습니다. 입력 형식을 엄격하게 다루지는 않겠습니다. 언어가 배열을 형식화하는 방식과 일치 할 수 있습니다.
아마도 더 자세한 설명 일 것입니다
나는 주머니에 일정 금액의 돈이 있는데, 이것은 가능한 통화 시연으로 구성됩니다. 8 달러를 가지고 있고 가능한 교파가 2 달러와 3 달러라는 것을 알고 있다면 내 주머니에 넣을 수있는 청구서 조합이 너무 많습니다. 이들은 2+2+2+2
및 3+3+2
. 정확한 금액의 돈을 생산하려면 주머니에있는 지폐 만 사용하여 그 수량을 생산할 수 있어야합니다. 내가 2를 4 개 가지고 있다면을 생산할 수 있습니다 2, 4, 6, or 8
. 3과 2가 2 개인 경우 2, 3, 5, 6, or 8
실제로 생산할 수 있습니다. 실제로 이러한 조합 중 어떤 것이 내 주머니에 있는지 알 수 없으므로 최종 답변이로 줄어 듭니다 2, 6, 8
. 이 내가 값입니다 알고 난 총 금액과 가능한 교단 주어, 내 주머니에서 생산할 수 있습니다.
수동 계산 예제 I / O
7 [3, 4]
3, 4, 7 //only one possible division into 3 + 4
7 [3, 2]
2, 3, 4, 5, 7 //the only division is 3 + 2 + 2
6 [2, 3, 4]
6 //divisions are 2+2+2, 3+3, 2+4
16 [1, 5, 10, 25] //this represents one of the examples above
1, 5, 6, 10, 11, 15, 16
27 [1, 5, 10, 25] //another example from above
1, 2, 25, 26, 27
1500 [1, 5, 10, 25, 100, 500, 1000, 2000]
500, 1000, 1500
600 [100, 500, 1000, 2000]
100, 500, 600
600 [200, 1, 5, 10, 25, 100, 500, 1000, 2000]
600
6 [2, 3, 4]
. 2+2+2
3을 만들 수없고 3+3
2와 4를 만들 수 없습니까?