/*思路:若n为偶数:
1: 若初始状态为偶数正面 + 偶数反面,要想变成全正或全反,翻转的次数必为偶数。
例如: ○○●●●● 则翻转 2,4,6,8……次均可。
2: 若初始状态为奇数正面 + 奇数反面,要想变成全正或全反,翻转的次数必为奇数。
例如: ○○○○○● 则翻转 1,3(先将●翻为○,再将任一个○翻两下),5,7……次均可。
因次,我们就无法得到一个确定的翻转次数x,让它能使任意初始状态的硬币变成全为正或全为反,因为若x为偶数,则无法满足例2,若x为奇数,则无法满足例1。故应输出"No Solution!"。
若n为奇数:
初始状态只可能为偶数正面 + 奇数反面(偶数反面 + 奇数正面同理),故要想变成全正或全反,是必能找出一个次数x满足所有任意情况的。
1:对初始状态即全为奇数个正面而言,翻转的次数必为偶数。
2: 由1得只能翻所有正面为反面,因为这样才需翻转偶数次。
例如: ○○○○●●● 则翻转4,6,8,10……次均可,其中最小为4。要保证对7枚硬币的任意初始状态都可行,则最小应为 7-1=6 ,否则对 ○○○○○○● 无法实现。
因此,当你为奇数是,最少翻转次数为n-1。
*/
//其分析转自:http://blog.sina.com.cn/s/blog_6635898a0100i540.html
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while (scanf("%d", &n)){
if (n == 0) break;
if (n % 2 == 0)
printf("No Solution!\n");
else printf("%d\n", n-1);
}
system("pause");
}
poj 3210 Coins
最新推荐文章于 2020-02-25 15:21:03 发布