翻硬币问题

题目

总共有n枚硬币均正面朝上,规则规定每次只能将其中p枚硬币翻面(1≤p≤n)。问最少需要多少次操作才能将所有硬币翻面。

思路

  • 先进行n/p次操作,将(n/p - 1)*p枚硬币翻面,令r = n % p,则剩余r + p;
  • 考虑将其中x枚反面朝上的硬币翻面,p - x枚正面朝上的硬币翻面;
  • 此时剩余正面向上的硬币总数为x + r + p - (p - x) = p,解方程得x = (p - r) / 2;
  • 方程有解的前提是x为偶数,故p和r应同奇偶,如p为奇数,每做一次操作,正面向上的硬币总数变换奇偶性
  • 现在讨论n和p的奇偶关系:
    • n为奇数,p为奇数:计k为n/p向上取整
      • k为奇数,可行
      • k为偶数,无解
    • n为偶数,p为偶数:可行。
    • n为奇数,p为偶数:无解。
    • n为偶数,p为奇数:计k为n/p向上取整
      • k为偶数,可行
      • k为奇数,无解
  • 应注意n/p介于1到2之间的情况。

答案

如满足上述奇偶讨论的要求:

  • 当n/p介于1到2之间时,答案为3;
  • 当n/p大于等于2时,答案为n/p向上取整;

不满足则无解。

你可能感兴趣的:(翻硬币问题)