题目意思是掷硬币,要求最少掷多少次能使全部硬币朝向一致。 分析: 当硬币个数是偶数时,硬币面有两种情况,一种正面为偶数个,反面是偶数个,另一种是正面奇数个,反面奇数个。第一种情况最少掷偶数次,第二种情况最少掷奇数次,二者矛盾,所以该情况下输出no solution。 当硬币个数是奇数时,情况是奇数个正面,偶数个反面,反之也成立。在这种情况下最少情况就是翻转一次,但是满足情况的最小的只有n-1
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while(cin>>n&&n){
if(n&1) printf("%d\n",n-1);
else puts("No Solution!");
}
return 0;
}