PHP (187)
골프를 치기위한 첫 번째 시도인데, 그것이 더 나을 수 있다는 것을 알고 있지만 여전히 :)
골프 :
<?php
$b=fgets(STDIN);list($c,$d)=explode(' ',$b);if((($d&1)AND($c%$d==0))OR($c%$d==$d/2)){for($e=floor($c/$d)+floor($d/2);$e>floor($c/$d)-round($d/2);$e--){echo"$e ";}}else{die('-1');}?>
언 골프 드 :
<?php
$a = fgets(STDIN);
list($coins, $dwarves) = explode(' ', $a);
if ((($dwarves & 1) AND ($coins % $dwarves == 0)) OR ($coins % $dwarves == $dwarves / 2)) {
for (
$i = floor($coins / $dwarves) + floor($dwarves / 2);
$i > floor($coins / $dwarves) - round($dwarves / 2);
$i--
) {
echo "$i ";
}
}
else {
die('-1');
}
?>
쉘에서 실행
기본 아이디어 :
다음 중 하나에 해당하면 다음 규칙에 따라 동전을 분리 할 수 있습니다.
- 드워프는 홀수이고, 코인은 잔존물이없는 드워프로 나눌 수 있습니다
- 드워프는 짝수이며 코인 / 드워프를 나눈 후 남은 동전은 드워프 수의 절반과 같습니다
그렇다면, 우리는 왜소 당 평균 코인 (ACPD)을 기준으로합니다. 그러나 최고에서 시작하여 최저에 도달 할 때까지 출력해야합니다. 따라서 우리는 ACPD에서 시작하는 카운터 + 더 높은 드워프의 나머지 드워프 수를 시작으로 루프를 만들고 ACPD에 도달 할 때까지 계속 진행합니다-나머지 드워프의 아래쪽 끝입니다.
드워프가 홀수 인 경우 (즉, 5 개의 드워프-중간이 3 개이고 양쪽 끝에 2 개가 남아있는 경우) 기본적으로 동일하지만 짝수 인 경우는 아닙니다-우리가 바닥과 라운드에 의존하는 이유입니다.
지금까지 문제 :
동전 수가 너무 적 으면 일부 드워프가 적의 귀중한 수입을 빼앗길 수 있습니다. 그리고 이것은 슬프다. 아니면 적어도 난쟁이를 좋아한다면.
해결책 :
- 가장 적은 양의 동전을 계산할 수있는 방법을 생각해 보면 먼지 속에서 드워프가 계산에 포함되지 않습니다.
- 욕심쟁이 드워프를 디자인하십시오.
똑똑한 솔루션 :
동전은 금속입니다. 드워프가 모두 녹게 한 다음, 소량 / 대량의 동전으로 캐스트하십시오.
가장 똑똑한 솔루션 :
그들의 산을 훔치고, 스마우그로 이름을 바꾸고 자신을 위해 모든 것을 지키십시오. 결국 왜 심술쟁이 드워프를 귀찮게해야합니까?