/puzzling//q/626에서 영감을 얻었습니다.
당신의 모험에서 당신은 교차 해야하는 일련의 7 다리에 도착합니다. 각 다리 아래에는 트롤이 있습니다. 다리를 건너려면 먼저 트롤에게 가지고있는 케이크 수의 백분율로 많은 케이크를 줘야합니다. 이것들은 친절한 트롤이기 때문에, 당신에게 일정한 수의 케이크를 돌려 줄 것입니다.
매일 매일, 현지 트롤 킹은 각 여행자가 지불해야하는 케이크 세율과 트롤 케이크 환불-각 트롤이 여행자에게 돌려 주어야하는 케이크의 수를 설정합니다.
당신의 임무는 그날 주어진 조건에 대해 7 개의 트롤 교량을 통과하는 데 필요한 최소 케이크 수를 계산하는 것입니다.
취하다:
- 두 가지 입력 매개 변수 : 케이크 세율 (0에서 100 사이의 정수) 및 트롤 케이크 환불.
- 트롤조차도 아무도 다른 트롤이 부분적으로 먹는 케이크를 원하지 않습니다. 케이크 한 조각이 남아 있으면 트롤이 가져옵니다.
- 트롤이 케이크 세를 받아들이지 만 모든 케이크를 돌려 주어야한다면 (전과 같거나 적은 케이크를 남겨둔 채), 화를 내고 당신과 당신의 케이크를 먹습니다.
- 모든 트롤은 하나 이상의 완전한 케이크를 유지해야합니다.
- 케이크는 최대 100 개까지만 운반 할 수 있습니다.
- 현재 위치한 교량 또는 7 개 교량의 반대편에 하루를 끝내야합니다.
도전:
오늘 하루 동안 여행 할 수있는 최소 케이크 수를 출력하거나 오늘 안전하게 여행 할 수없는 경우에는 0을 출력하는 완전한 프로그램을 작성하십시오. 내일 숫자가 무엇인지 기다릴 것입니다.
입력은 stdin, 명령 행 인수 또는 파일 입력으로 전달되어야합니다.
가장 짧은 코드 (바이트 수)가 이깁니다.
예:
케이크 세 25 %, 트롤 케이크 환불 2 회.
트롤 1 전에 19 개의 케이크로 시작하십시오 : (19 * 0.75) =
트롤 1:14 후 14.25 : (14 + 2) = 16
트롤 2 전 : (16 * 0.75) =
트롤 2 후 : (12 + 2) = 14
기타
19 개 케이크-> 16-> 14-> 12-> 11-> 10-> 9-> 8
18 개 케이크-> 15-> 13-> 11-> 10-> 9-> 8-> 8 (규칙 3)
18 개의 케이크의 경우, 마지막 트롤은 케이크를 보관할 수 없습니다. 따라서 25 % / 2 일의 최소 케이크 수는 19입니다.
input: 25 2
output: 19
예 2 :
케이크 세 90 %, 트롤 케이크 1 회 환불
케이크 100 개-> 11-> 2-> 1 (규칙 4)
세 번째 트롤은 케이크를 보관하지 못했습니다. 따라서 최대 케이크 수부터 시작하여 90 % / 1 일 여행 할 수 없습니다.
input: 90 1
output: 0
데이터
입력 및 출력 값의 빠른 그래프를 구성하십시오. 나는 이것이 "부드럽 지 않다"는 것에 놀랐습니다. 눈에 띄는 섬이 몇 군데 있습니다.
관심있는 사람들을위한 데이터. 열은 5 % 간격으로 나뉘고, 행은 1 케이크 환불 간격의 단위입니다 (이미지 회전). 당신은 28 케이크보다 높은 환불이 불가능하다는 것을 알 수 있습니다.
27, 17, 13, 14, 15, 18, 20, 24, 53, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
47, 27, 20, 19, 19, 19, 24, 39, 48, 68, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0
67, 37, 28, 24, 23, 28, 27, 29, 50, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
87, 47, 33, 29, 27, 28, 31, 44, 37, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 57, 40, 34, 31, 29, 34, 34, 62, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 67, 48, 39, 35, 38, 37, 49, 57, 76, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 77, 53, 44, 39, 38, 47, 39, 59, 78, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 87, 60, 49, 43, 39, 40, 54, 46, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 97, 68, 54, 47, 48, 44, 44, 71, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 73, 59, 51, 48, 47, 59, 73, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 80, 64, 55, 49, 51, 49, 68, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 88, 69, 59, 58, 54, 64, 70, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 93, 74, 63, 58, 57, 54, 57, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 100, 79, 67, 59, 67, 69, 82, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 84, 71, 68, 60, 59, 77, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 89, 75, 68, 64, 74, 79, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 94, 79, 69, 67, 64, 66, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 99, 83, 78, 71, 79, 91, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 87, 78, 74, 69, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 91, 79, 77, 84, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 95, 88, 87, 74, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 99, 88, 80, 89, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 89, 84, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 98, 87, 94, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 98, 91, 84, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 99, 94, 99, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 97, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
25 2
11 케이크의 경우, 당신은 트롤에게 2.75 케이크를주고 2를 다시 얻을 트롤은 0.75 유지하므로 (+를. 25) 당신은 살아 남기. 에서 90 1
2 케이크의 경우, 당신은 트롤 1.8을 제공하고 트롤은 0.8 유지 그래서 다시 일을 얻을 (+합니다. 2)하지만 당신은 죽는다.