PHP算法题目 - 有多少苹果用于分赃

算法  

题目:

  有5个人偷了一堆苹果,他们准备在第二天进行分赃。晚上,有一个人溜出来,他把所有苹果分成了5份,但是多了一个,他顺手把这多的一个苹果扔给树上的猴子,自己先拿 1/5 藏了起来。没想到其他四人也都是这么想的,都如第一个人一样把苹果分成5份,把多的那一个扔给了树上的猴,偷走了 1/5。第二天,大家分赃,也是分成5份多一个扔给猴子。最后一人分了一份。问:共有多少苹果?

分析与解答:

  假设苹果总数量为 $s,如果分5次,每一次分成5分,都能正好剩下1,(也就是取余后为1),则这个结果就是正确结果,否则 将 $i 加1,继续判断,直到找到符合条件的 $i.

  1. <?php
  2. declare(strict_types = 1);
  3. // $s为假设的符合条件的苹果总数,用这个数去判断5次,5个人是否都能取余5结果为1
  4. for ($s = 1; true; $s++) {
  5. // 判断第一个人
  6. if ($s % 5 == 1) {
  7. $firstResidue = round($s - $s / 5) - 1;
  8. // 继续判断第二个人
  9. if ($firstResidue % 5 == 1) {
  10. $secondResidue = round($firstResidue - $firstResidue / 5) - 1;
  11. // 继续判断第三个人
  12. if ($secondResidue % 5 == 1) {
  13. $thirdResidue = round($secondResidue - $secondResidue / 5) - 1;
  14. // 继续判断第四个人
  15. if ($thirdResidue % 5 == 1) {
  16. $forthResidue = round($thirdResidue - $thirdResidue / 5) -1;
  17. // 继续判断第五个人
  18. if ($forthResidue % 5 == 1) {
  19. $fifthResidue = round($forthResidue - $forthResidue / 5) - 1;
  20. if ($fifthResidue % 5 == 1) {
  21. echo $s;
  22. exit;
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }
  29. }


Top