POJ-3210-Coins-解题报告
2011-01-26 10:54
239 查看
题意:
给定n个硬币,进行x次翻转,每次只能翻转一个硬币,且每个硬币可被翻转多次。
问:对于所有初始情况下的硬币(即正反面的硬币数不一样),直少需要翻转几次才能达到所有硬币均处于同一面的状态。
分析:
1. n为偶数。
1)若所有硬币均处于同一面,最小翻转次数x一定是偶数。
2)若不是所有硬币均处于同一面,则一定是以下两种情况:
i. 正面数为奇,反面数也为奇。最小翻转次数一定为奇。
ii.正面数为偶,反面数也为偶;最小翻转次数一定为偶。
由以上分析,知不存在最小翻转次数x,使得经过x次翻转后,所有硬币均处于同一面。
2. n为奇数。
1)若所有硬币均处于同一面,最小翻转次数x一定是偶数。
2)若不是所有硬币均处于同一面,则一定是以下两种情况:
i. 正面数为奇,反面数为偶。最小翻转“偶”次数可以这样达到:
先翻转所有的反面硬币(偶),接着便是翻转所有处于同一面的硬币(偶),可以达到偶次翻转。
ii.正面数为偶,反面数为奇。最小翻转“偶”次数可以这样达到:
先翻转所有的正面硬币(偶),接着便是翻转所有处于同一面的硬币(偶),可以达到偶次翻转。
对于i,ii这两种的所有情况,都是先翻转具有同一***有偶数个的硬币。这样求出最小的x为:
x = n - 1
简单说下上式为何成立。至少n-1次翻转对应的是1个硬币与n-1个硬币不同面的情况,翻转这n-1个硬币便可达到目标;对于其他有2,3,4……,n-1个硬币跟余下硬币不同面的情况,均可进行n-1次翻转后达到目标。如有2个硬币与余下的n-2个硬币一同面,则先翻转该2个硬币,接着所有硬币便处于同一面,翻转n-1-2便也达到目标。
代码:
给定n个硬币,进行x次翻转,每次只能翻转一个硬币,且每个硬币可被翻转多次。
问:对于所有初始情况下的硬币(即正反面的硬币数不一样),直少需要翻转几次才能达到所有硬币均处于同一面的状态。
分析:
1. n为偶数。
1)若所有硬币均处于同一面,最小翻转次数x一定是偶数。
2)若不是所有硬币均处于同一面,则一定是以下两种情况:
i. 正面数为奇,反面数也为奇。最小翻转次数一定为奇。
ii.正面数为偶,反面数也为偶;最小翻转次数一定为偶。
由以上分析,知不存在最小翻转次数x,使得经过x次翻转后,所有硬币均处于同一面。
2. n为奇数。
1)若所有硬币均处于同一面,最小翻转次数x一定是偶数。
2)若不是所有硬币均处于同一面,则一定是以下两种情况:
i. 正面数为奇,反面数为偶。最小翻转“偶”次数可以这样达到:
先翻转所有的反面硬币(偶),接着便是翻转所有处于同一面的硬币(偶),可以达到偶次翻转。
ii.正面数为偶,反面数为奇。最小翻转“偶”次数可以这样达到:
先翻转所有的正面硬币(偶),接着便是翻转所有处于同一面的硬币(偶),可以达到偶次翻转。
对于i,ii这两种的所有情况,都是先翻转具有同一***有偶数个的硬币。这样求出最小的x为:
x = n - 1
简单说下上式为何成立。至少n-1次翻转对应的是1个硬币与n-1个硬币不同面的情况,翻转这n-1个硬币便可达到目标;对于其他有2,3,4……,n-1个硬币跟余下硬币不同面的情况,均可进行n-1次翻转后达到目标。如有2个硬币与余下的n-2个硬币一同面,则先翻转该2个硬币,接着所有硬币便处于同一面,翻转n-1-2便也达到目标。
代码:
#include <iostream> using namespace std; int main() { int n; while(cin >> n , n != 0) { if(n % 2 == 0) cout << "No Solution!" << endl; else cout << n - 1 << endl; } return 0; }
相关文章推荐
- 【原】 POJ 3210 Coins 巧妙的简单题 解题报告
- poj1742 Coins 解题报告
- POJ 3792 Area of Polycubes 解题报告
- POJ 1753 POJ 2965 解题报告
- POJ 1845 Sumdiv 解题报告(二分 & 逆元)
- poj1300 解题报告
- POJ 3258 River Hopscotch 解题报告(二分)
- POJ 1523 SPF [解题报告]
- POJ 1611 The Suspects 解题报告
- poj 2585 Window Pains 解题报告
- POJ 1952 解题报告
- POJ 1523 解题报告
- poj解题报告
- poj解题报告——1321
- POJ 2739 解题报告
- POJ 1753 Flip Game 解题报告
- POJ 1308 Is It A Tree? 解题报告
- poj 2195-Going Home解题报告
- POJ 2191 Mersenne Composite Numbers 解题报告(大数因式分解)
- poj 3228 Gold Transportation 最小生成树+带权并查集 解题报告