배경
가상의 골 페니 스탄 국가의 공식 통화는 foo 이며, 3 개의 동전, 7 개의 동전 및 8 개의 동전이 유통되고 있습니다. 이 동전을 사용하여 4 foos와 같은 특정 금액을 지불하는 것이 불가능하다는 것을 알 수 있습니다. 그럼에도 불구하고, 충분히 많은 양이 형성 될 수있다. 당신의 임무는 동전 (이 경우 5 foos)으로 형성 할 수없는 가장 큰 금액을 찾는 것 입니다. 이 동전 문제는 .
입력
귀하의 입력은 양의 정수 목록 이며 순환 동전의 가치를 나타냅니다. 그것에 대해 두 가지가 보장됩니다.L = [n1, n2, ..., nk]
- 요소의 GCD
L
는 1입니다. L
숫자 1을 포함하지 않습니다.
그것은 분류되지 않았거나 중복을 포함 할 수 있습니다 (특별 판 동전을 생각하십시오).
산출
의 GCD L
가 1이므로, 충분히 큰 정수 m
는 모두 요소의 음이 아닌 선형 조합으로 표현 될 수 있습니다. 다시 말해, 우리는
m = a1*n1 + a2*n2 + ... + ak*nk
일부 정수의 경우 . 출력은 이 형식으로 표현할 수없는 가장 큰 정수입니다 . 힌트로, 이는 출력이 항상 미만인 것으로 알려져 있다면, 및 최대와 최소의 요소이다 ( 참조 ).ai ≥ 0
(n1 - 1)*(nk - 1)
n1
nk
L
규칙
전체 프로그램이나 함수를 작성할 수 있습니다. 바이트 수가 가장 적고 표준 허점이 허용되지 않습니다. 귀하의 언어가이를 위해 내장 된 조작을 사용하는 경우이를 사용할 수 없습니다. 답변을 게시하기 전에 테스트 사례를 평가할 수 있다는 점을 제외하고 시간 또는 메모리 효율성에 대한 요구 사항은 없습니다.
이 챌린지를 게시 한 후 @vihan 사용자는 Stack Overflow가 정확히 중복 됨을 지적했습니다 . 이 메타 토론을 바탕으로 으로이 도전은 중복으로 삭제되지 않습니다. 그러나 SO 버전의 답변을 기반으로 한 모든 답변은 원본을 인용하고 커뮤니티 위키 상태를 부여받으며 원래 작성자가 답변을 게시하려면 삭제해야합니다.
테스트 사례
[3, 7, 8] -> 5
[25, 10, 16] -> 79
[11, 12, 13, 14, 13, 14] -> 43
[101, 10] -> 899
[101, 10, 899] -> 889
[101, 10, 11] -> 89
[30, 105, 70, 42] -> 383
[2, 51, 6] -> 49
[2,3]
합리적인 시간에 아무것도 할 수없는 13 바이트 Pyth 솔루션이 있습니다 . [2,5]
메모리에 약 백만 개의 파이썬 목록을 만들 것입니다.
FrobeniusNumber
Mathematica에서.