2013-07-05 3 views
-4

10 달러짜리 상자에 1000 달러를 배분하여 $ 1에서 $ 1000 사이의 금액이이 상자의 일부 조합으로 제공 될 수 있도록하는 방법.알고리즘 퍼즐

해결 방법에 대한 힌트를 제공하십시오. 시도했지만 해결책을 찾을 수 없습니다.

+4

큰 힌트 : 2의 제곱 –

+3

이 질문은 프로그래밍과 관련이 없기 때문에 논제가 아닌 것 같습니다. –

+0

@Lior Kogan : 그런 질문을 게시 할 수있는 링크를 제공 할 수 있습니까? – user122345656

답변

2

1에서 1000까지의 모든 숫자를 밑줄 2로 표시하십시오. 이 숫자는 2^10 = 1024부터 10 비트가 필요합니다. 상자의 숫자는 2^8이고 마지막 상자의 숫자는 489입니다 (2^0 ~ 2^8489은 10 개의 상자와 2^0 + 2^1 + ... + 2^8 + 489 = 2^9 - 1 + 489 = 511 + 489 = 1000입니다). 비트 표현은 1000의 숫자를 조합하여 1000으로 쓸 수 있다는 증거를 제공합니다. 이 상자들 (분명히 511까지는 아무 것도 괜찮습니다. 511보다 큰 값은 489를 빼고 나머지는 511보다 작거나 같음을 보장하기 때문에 나머지 8 상자의 조합으로 나머지를 쓸 수 있습니다).

+0

고맙습니다. – user122345656

3

십진수 변환에 이진 적이 있습니까? 1에서 1000 사이의 숫자를 가져 와서 이진으로 변환 해보십시오. 당신은 2의 제곱을 다루고 있음을 알게 될 것입니다.

2의 배수에서 필요한만큼의 양을 배분하고 비트를 1로 설정 한 상자를 선택하십시오.

+0

"당신은 2의 힘을 다루고 있습니다"라는 말은 무엇을 의미합니까? 조금 더 자세히 설명해 주시겠습니까? – Aravind

+0

어떻게 10 진수를 2 진수로 변환합니까? 당신은 일반 비율 = 2 인 일종의 GP 시리즈를 가지고 있습니다. 당신이 15를 변환해야한다면 (금액을 말하십시오), ** ....., 16, 8, 4, 2, 1 ** 이 종류의 무언가 및 15를 위해, 당신은 마지막 4 개의 수 (8 + 4 + 2 + 1)를 필요로한다이 조금이 1에 놓았다는 것을 당신이 1111를 15로주는 것을 의미하십시오. 지금, 수수께끼의 점에서, 2의 제곱 수를 계산 한 다음 15로 변환 한 다음 2 진수로 변환하고 세트 비트를 찾은 다음 해당 숫자의 상자를 선택하십시오. –

+0

고맙습니다. 나는 논리를 가지고 있습니다. – user122345656