poj 3210 Coins

#include <iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
if(n%2==0)printf("No Solution!\n");
else printf("%d\n",n-1);
}
return 0;
}
/*
1.若N为偶数。若初始状态为硬币全部同面的话,则翻转次数为偶数 (0+2*i,i=0,1,2... 对一枚硬币可以翻任意2*i次 )
正反面硬币的组合可能是(奇数+奇数)或者(偶数+偶数)。当正反面硬币数目均为偶数时,想要同一面朝上,翻转次数必为偶数。
若正反面硬币都是奇数,则翻转次数必为奇数。两者矛盾。所以在N为偶数时无解。

2.若N为奇数,若所有的硬币开始就是同一面朝上,则翻转次数必为偶数。
正反面硬币的组合只能是(奇数+偶数)由于翻转次数为偶数,故必须将数目为偶数的那部分硬币反过来。
当只有一枚硬币与其他硬币不同时,出现的是可能的最大数目即为N-1.故N为奇数时,翻转次数为N-1.

*/

  

posted on 2011-07-20 22:55  sysu_mjc  阅读(115)  评论(0编辑  收藏  举报

导航