Poj 3210 Coins(思维)(矛盾推理)

it2022-06-29  92

题目意思是掷硬币,要求最少掷多少次能使全部硬币朝向一致。 分析: 当硬币个数是偶数时,硬币面有两种情况,一种正面为偶数个,反面是偶数个,另一种是正面奇数个,反面奇数个。第一种情况最少掷偶数次,第二种情况最少掷奇数次,二者矛盾,所以该情况下输出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; }

最新回复(0)