题目
总共有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为奇数:计k为n/p向上取整
- 应注意n/p介于1到2之间的情况。
答案
如满足上述奇偶讨论的要求:
- 当n/p介于1到2之间时,答案为3;
- 当n/p大于等于2时,答案为n/p向上取整;
不满足则无解。