硬币翻转问题
- 格式:docx
- 大小:14.92 KB
- 文档页数:2
作者: 杨金珏翻硬币问题诀窍翻硬币问题诀窍硬币问题是公务员考试出现的数学运算题型,属于逻辑类考题,这类问题变化复杂,对考生的推理能力要求高。
博大弘仕杨金珏老师将在这里介绍翻硬币问题的快速解题技巧。
首先要明白什么是“翻硬币问题”,通常题面形式是这样的:M个硬币全部正面朝上,现在要求每次必须同时翻转其中的N个硬币,至少翻转多少次才能使全部硬币反面朝上?那么可能出现四种情况:硬币总数(M)每次翻硬币数量(N)奇奇奇偶偶奇偶偶上面四种情况中,只有当硬币总数是奇数个并且每次翻偶数个硬币时,不能完成要求,其他三种都可以完成翻转。
为什么不能完成这种情况呢?根据奇偶的基本性质可以推导出来,每个硬币必须翻转奇数次才能实现反面朝上,现在总数是奇数,那么所有硬币翻转总数就是奇数个奇数,其结果必定是个奇数。
但是每次翻转偶数个硬币,那么硬币被翻动的总数为偶数乘以翻动次数,结果必定是偶数。
所以这种情况下是不可能完成任务的。
翻硬币问题形式多样,这里总结出了一个基本的解题步骤。
第一步:判断总个数是否与每次翻的个数呈倍数关系。
如果是倍数关系,翻动次数=M÷N第二步:如果没有倍数关系,考虑硬币总数的奇偶情况。
当总数为偶数(1)每次翻的个数是总数减一【例1】现有6个一元面值硬币正面朝上放在桌子上,你可以每次翻转5个硬币(必须要翻转5个),问你最少要经过几次翻转可以使这6个硬币全部反面朝上?A.5次B.6次C.7次D.8次【解析】本题属于归纳推理问题。
一个硬币要翻面,需要翻奇数次,一共有6个硬币,每一次翻转5个,那么必须翻转偶数次才能保证每一枚硬币翻转奇数次,故排除A、C。
因为每次翻五个,则有一个没被改变,或者说每次是在原来的基础上变一个,一共有6个硬币,每次变一个,那么需要6次才能全部变完。
具体过程如下:故需要6次,故正确答案为B。
这类问题的解答公式为:翻动次数=M翻动方法:只要按照第一次第一个不翻,第二次第二个不翻,按照此方法进行操作就可以成功。
翻硬币问题翻硬币问题有好几种。
其中的一种是这样的:桌子上有q = m + n枚硬币,m正面朝上,n枚反面朝上,每一轮翻p枚,在每一轮翻币的时候,被翻的同一枚硬币只能翻一次。
问最少多少次能把所有的硬币翻成全部正面或者反面朝上?根据问题的描述,问题实际上隐含:m 、n、 p > 0,m + n > p。
这个问题往往是计算机编程的问题。
涉及广度优先还是深度优先搜索。
我对广度优先还是深度优先搜索了解的甚少。
以下是用笨办法求解的。
1)币面状态数:用 (正面朝上币数, 反面朝上币数 )表示,显然初始状态是( m, n )。
假设第一轮翻币翻反面(或者正面)的硬币数为:i1<=n,则第一轮翻币分别翻正面(或者反面)的硬币数为:p - i1 <m, 此时币面状态数为:( m – ( p - i1 ) + i1, n - i1 + ( p - i1 ) ) = ( m – p + 2 * i1 , n + p - 2 * i1) 第二轮翻币翻反面(或者正面)的硬币数为:i2< n + p - 2 * i1,则第二轮翻币分别翻正面(或者反面)的硬币数为:p – i2 < m – p + 2 * i1, 此时币面状态数为:( m – p + 2 * i1 – ( p – i2 ) + i2, n + p - 2 * i1 + p - 2 * i2)= ( m – 2 * p + 2 * ( i1 + i2 ), n + 2 * p - 2 * ( i1 + i2 ) )第三轮币面状态数:( m – 3 * p + 2 * ( i1 + i2 + i3), n + 3 * p - 2 * ( i1 + i2 + i3)) ……………………………………………………第k轮币面状态数:( m – k * p + 2 * ( i1 + i2 + … + i k), n + k * p - 2 * ( i1 + i2 + … + i k))简记:t = i1 + i2 + … + i k,则第k轮币面状态数可以标示为:( m – k * p + 2 * t, n + k * p - 2 * t)2)完成翻币条件如果在某一轮翻币后,正面币数或者反面币数能被p整除(其中之一等于零也被包含),则以后的每一轮全翻那个币面数能被p整除的那一部分就可以完成翻币,这一段话的意思就是:m – k * p + 2 * t = s * p或:n + k * p - 2 * t = s * p稍微变换一下:m – k * p + 2 * t = s * p —> ( s + k ) * p – 2 * t = m或:n + k * p - 2 * t = s * p —> ( s – k ) * p + 2 * t = n因此问题转换为求解不定方程:( s + k ) * p – 2 * t = m或者( s – k ) * p + 2 * t = n隐含条件:t >= 0, k >= 0, s >= 0, 如果t > 0, k > 0, s >= 0m – k * p + 2 * t >= 0, n + k * p – 2 * t <= m + n Æ k * p – 2 *t <= m同时还必须:m – k * p + 2 * t <= m + n Æ 2 * t – k * p <= n, n + k * p – 2 * t >= 0 3)二元一次不定方程的整数解这个问题网上有多个介绍,可以谷歌或者百度一下,答案一大堆。
题目:有25枚硬币放在桌子上,其中10枚是正面朝上。
现在,你被蒙住眼睛,并且手也摸不出硬币的反正面。
你用什么方法能将硬币分成两堆,而且这两堆硬币正面朝上的个数相同?
解析:
1. 观察法:由于题目中提到无法通过触摸来分辨硬币的正反面,因此只能依靠视觉。
我们可以观察硬币的排列方式。
2. 取补数法:我们可以将10枚正面朝上的硬币放在一堆,将剩下的15枚硬币放在另一堆。
由于10和15互为补数,所以翻转10枚硬币和翻转15枚硬币的效果是相同的,即正面朝上的硬币数会从10变成0,反面朝上的硬币数会从15变成15。
这样,两堆硬币正面朝上的个数就相同了。
答案:将10枚正面朝上的硬币放在一堆,将剩下的15枚硬币放在另一堆,然后将10枚硬币全部翻面即可。
6个硬币智力题人们通常相信,如果你能够解决6个硬币智力题,那么你可以被认为有足够的智商来应对更复杂的问题,尤其是那些理论性比较强的综合性问题。
第一个问题:有六枚硬币,三枚正面朝上,三枚反面朝上。
把这六枚硬币中的任意三枚硬币正面朝上翻转,最少需要翻转多少次,才能让这六枚硬币全部为正面朝上?最少只需要翻转两次。
首先,将两枚正面朝上的硬币翻转过来;然后,将三枚反面朝上的硬币翻转过来即可。
第二个问题:有六枚硬币,三枚正面朝上,三枚反面朝上。
把这六枚硬币中的任意三枚硬币正面朝上翻转,最少需要翻转多少次,才能让六枚硬币中有五枚正面朝上?最少只需要翻转一次。
这可以通过将三枚反面朝上的硬币翻转过来,使五枚硬币正面朝上实现。
第三个问题:有六枚硬币,其中三枚正面朝上,三枚反面朝上。
把这六枚硬币中的任意三枚硬币在多少种不同的方式下可以正面翻转?这可以有三种不同的方式来翻转这六枚硬币:第一种是将三枚正面朝上的硬币翻转过来;第二种是将三枚反面朝上的硬币翻转过来;第三种是将三枚正面朝上的硬币和三枚反面朝上的硬币交替翻转一次。
第四个问题:如果有九枚硬币,有四枚正面朝上,五枚反面朝上,把这九枚硬币中的任意五枚硬币正面朝上翻转,最少需要翻转多少次?最少只需要翻转一次。
这可以通过将五枚反面朝上的硬币翻转过来来实现。
第五个问题:如果有八枚硬币,有三枚正面朝上,五枚反面朝上,把这八枚硬币中的任意三枚硬币正面朝上翻转,最少需要翻转多少次?最少只需要翻转一次。
这可以通过将三枚反面朝上的硬币翻转过来实现。
第六个问题:如果有十枚硬币,有四枚正面朝上,六枚反面朝上,把这十枚硬币中的任意六枚硬币正面朝上翻转,最少需要翻转多少次?最少只需要翻转一次。
这可以通过将六枚反面朝上的硬币翻转过来实现。
以上就是围绕着6个硬币智力题的具体内容,解决这些智力题的方法也许能够帮助大家在实际的生活中有更多的智慧,去解决一些比较复杂的问题,比如像是一些综合性问题。
考虑到这样的特点,我们可以将其进一步应用到我们的日常生活中。
翻硬币问题桌面上有n枚硬币, 初态是全部正面向上,现让你每轮把其中的m (2m≤n)枚翻转,希望最终全部反面向上. 请建立数学模型研究n, m 在什么条件下此问题有解或无解.解答:1.概念与性质定义:纯翻转-------m个都是正面的一轮翻转;(混合)翻转------取a (>0)个正面,m-a个反面的一轮翻转.显然,纯翻转是混合翻转的特例(a=m).设=+,(1)n sm t≤<, s为正整数.其中,t为n除以m的余数,0t m记变量k表示当前的正面数.显然,从开始,经过s轮纯翻转后k=t; 当k=0时,就成功了.性质1. 选a个正面和m-a个反面的一轮翻转后,正面数的变化量为.k m a∆=-,(2)2∆=-.特别是,做纯翻转时,k m性质2. 当k(<2m)为偶数时,只需再翻两轮必会成功.证明:若k=m , 则做一轮纯翻转必成功.≠,则先选k/2个正面和m-k/2个反面做一轮翻转,若k m1(注:因2m<n<2n-k, 故2m<2n-k, 2m-k<2n-2k, m-k/2<n-k, n-k是反面数,即这样选取是可行的. )则翻转后的正面数k k k k m k m=+∆=+-='()k=,就成功了.再做一轮纯翻转,"0≠时,只翻一轮必定未能成功,故翻两轮必是最佳方法因为k m(轮数最少)2.情形一,m是奇数(不论n是奇数还是偶数).先做s-1轮纯翻转,得k=m+t. 只有如下3种可能:(ⅰ)t=0. k=m, 再做一轮纯翻转就成功.(ⅱ)t (<m)是奇数. k已是偶数,且m<k<2m.由性质2,只需再翻两轮必会成功.(ⅲ)t (<m)是偶数. 再做一轮纯翻转后化为k=t. 由性质2,只需再翻两轮必会成功.3.情形二,n,m都是偶数. 由(1)式知t是偶数或0, 经s轮纯翻转后,k=t,由性质2,至多再翻两轮就会成功.4.情形三,n是奇数,m是偶数. 由(1)式知t是奇数, 由(2)式知, k∆是偶数或0,故无论翻转多少轮,k始终是奇数, 不会出现k=0, 即不会成功.25.综合6. 例子例1.n=8,m=3, s=2, t=2. 翻4轮必成功0------正面,1------反面例2 . n=7,m=3, s=2, t=1. 翻3轮必成功34推广把以上的条件2m ≤n , 改为 m ≤n 。
第1篇一、背景在一个神秘的岛上,生活着一位富有智慧的老者。
这位老者喜欢与岛上的居民们玩智力游戏,以此考验他们的智慧。
今天,他带来了一款名为“翻银币”的智力游戏。
游戏规则如下:1. 桌面上有10枚银币,正面朝上,正面图案为“1”,反面图案为“0”。
2. 每位参与者有3次机会,每次机会可以翻转任意一枚银币。
3. 每次翻转后,参与者需要说出翻转后的银币总数。
4. 在3次机会结束后,参与者需要计算出所有银币的总数,并说出正确答案。
5. 答案最接近实际总数且次数最少的参与者获胜。
二、游戏过程1. 老者将10枚银币摆放整齐,正面朝上。
2. 第一位参与者上台,他看着桌面上的银币,开始思考。
3. 经过一番思考,他决定翻转第1枚银币。
翻转后,他看到正面朝上,于是他大声说出:“1枚银币正面朝上。
”4. 接下来,他继续翻转第2枚银币,翻转后,他看到反面朝上,于是他大声说出:“2枚银币正面朝上。
”5. 最后,他翻转第3枚银币,翻转后,他看到正面朝上,于是他大声说出:“3枚银币正面朝上。
”6. 第一位参与者完成翻转后,他下台,第二位参与者上台。
7. 第二位参与者上台后,他看着桌面上的银币,开始思考。
8. 经过一番思考,他决定翻转第4枚银币。
翻转后,他看到反面朝上,于是他大声说出:“2枚银币正面朝上。
”9. 接下来,他继续翻转第5枚银币,翻转后,他看到正面朝上,于是他大声说出:“3枚银币正面朝上。
”10. 最后,他翻转第6枚银币,翻转后,他看到反面朝上,于是他大声说出:“2枚银币正面朝上。
”11. 第二位参与者完成翻转后,他下台,第三位参与者上台。
12. 第三位参与者上台后,他看着桌面上的银币,开始思考。
13. 经过一番思考,他决定翻转第7枚银币。
翻转后,他看到正面朝上,于是他大声说出:“3枚银币正面朝上。
”14. 接下来,他继续翻转第8枚银币,翻转后,他看到反面朝上,于是他大声说出:“2枚银币正面朝上。
”15. 最后,他翻转第9枚银币,翻转后,他看到正面朝上,于是他大声说出:“3枚银币正面朝上。
问题描述小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。
我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。
每行的长度<1000输出格式一个整数,表示最小操作步数。
样例输入1**********o****o****样例输出15样例输入2*o**o***o****o***o**o***样例输出21思路:这道题其实隐藏了一个条件,初始状态和目标状态不同之处肯定只有偶数处,不可能有奇数处,不然初始状态到达不了目标状态,把初始状态和目标之处的相同之处标记为0不同之处标记为1。
先举一个例子1011001,是先翻中间的2个1呢还是一次翻呢,先翻中间2个1,总共的次数是6次,一次翻总共是5次,其实只要依次翻就是最少的,自己可以画一下,总的次数就是依次2个1的下标之差的总和AC代码:[cpp]view plaincopyprint?1. #include <iostream>2. #include <cstdio>3. #include <cstdlib>4. #include <algorithm>5. #include <queue>6. #include <stack>7. #include <map>8. #include <cstring>9. #include <climits>10. #include <cmath>11. #include <cctype>12.13. typedef long long ll;14. using namespace std;15.16. char a[1010];17. char b[1010];18.19. int main()20. {21. int i;22. while(scanf("%s%s",a,b) != EOF)23. {24. int n = strlen(a);25. int sum = 0,k;26. bool flag = true;27. for(i=0; i<n; i++)28. {29. if(a[i] != b[i])30. {31. if(flag)32. {33. k = i;34. flag = false;35. }36. else37. {38. sum += i - k;39. flag = true;40. }41. }42. }43. printf("%d\n",sum);44. }45. return 0;46. }•蓝桥杯算法训练2的次幂表示•蓝桥杯历届试题核桃的数量(求三个数的最小公倍数)。
硬币翻转(coin)【问题描述】在桌面上有一排硬币,共n枚,每一枚硬币均为正面向上。
现在要把所有的硬币翻转成反面向上,规则是每次可翻转任意n-1枚硬币(正面向上的翻转成向下,向下的翻转成向上)。
求一个最短的操作序列(将每次翻转n -1枚硬币定为一次操作)。
【输入格式】只有一行,包含一个自然数n(n为不大于100的偶数)【输出格式】第一行包含一个整数s,表示最少需要的操作次数。
接下来s行每行分别表示每次操作后桌上硬币的状态(一行包含n个整数(0或1),表示每个硬币的状态,0正面向上,1反面向上,不允许出现多余的空格)。
对于有多种操作方案的情况,则只需输出一种。
【输入样例】coin.in4【输出样例】coin.out40111110000011111答案:var n,i,j:longint;a:array[1..500] of longint;beginassign(input,'coin.in');assign(output,'coin.out');reset(input);rewrite(output);read(n);writeln(n);for i:=1 to n dobeginfor j:=1 to n doif i<>j thenif a[j]=1 then a[j]:=0 else a[j]:=1;for j:=1 to n dowrite(a[j]);writeln;end;close(input);close(output);end.。
硬币翻转问题全面分析(黑体字一定要看)
现有6个一元面值硬币正面朝上放在桌子上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转可以使这6个硬币全部反面朝上?
A.5次
B. 6次
C.7次
D.8次
当M为偶数时,N有以下几种情况:
(1) N=M-1
例如:现有6个一元面值硬币正面朝上的放在桌上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转才可以使这6个硬币全部反面朝上?
A 5次
B 6次
C 7次
D 8次
这种情况是固定的答案就是M次
(2)N>M/2 但不满足N=M-1,
例如:现有8个一元面值硬币正面朝上的放在桌上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转才可以使这8个硬币全部反面朝上?
注: 5>8/2, 且5不等于7 满足条件的。
这种情况我总结了一个公式为结果=(M-N)÷2+2,
(前面除以2部分要采用四舍五入)
解析:(8-5)÷2+2=4次
(3)N<M/2
我们根据逆向思维原则,可以反过来利用(2)的公式求解,
例如:现有8个一元面值硬币正面朝上的放在桌上,你可以每次翻转3个硬币(必须翻转3个),问你最少经过几次翻转才可以使这8个硬币全部反面朝上?
3<8/2, 满足条件。
我们注意到:8=3+5,因此每次翻转3个,和每次翻转5个是相同的效果,次数一样。
故而转化为(2)的方式求解。
还是4次。
当M为奇数的时候,N也有如下几种情况:
(1)N>M/2
例如:现有11个一元面值硬币正面朝上的放在桌上,你可以每次翻转7个硬币(必须翻转7个),问你最少经过几次翻转才可以使这11个硬币全部反面朝上?
这种情况的结果固定为3.
(2)N<M/2
例如:现有11个一元面值硬币正面朝上的放在桌上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转才可以使这11个硬币全部反面朝上?
我们可以发现 11=5+6,我们先转换1次剩下的6个再每次转换5个,就变成了偶数情况,但是注意,其结果并不是1+6=7,当剩下的结果比翻转次数大1,那么其结果只需再+2即可那么答案就是1+2=3次。
例如:现有11个一元面值硬币正面朝上的放在桌上,你可以每次翻转3个硬币(必须翻转3个),问你最少经过几次翻转才可以使这11个硬币全部反面朝上?
11=3×2+5 因此就变成了翻转2次之后剩下5翻转3, 5翻转3 我们都知道是3次因此答案是2+3=5次
例如:现有13个一元面值硬币正面朝上的放在桌上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转才可以使这13个硬币全部反面朝上?
13=5×1+8 因此只需翻转1次就剩下8个,翻转5个,剩余数是偶数个则只需最后+2: 1+2=3次
其实如果看着烦,只要记住以下的公式就好了
翻硬币问题核心公式:
1. N(N必须为偶数)枚硬币,每次同时翻转其中N-1枚,至少需要N次才能使其完全改变状态。
2. 当N为奇数时,每次同时翻转其中N-1枚,无论如何翻转都不能使其完全改变状态。
3. 此公式同样适用于转身问题、拉灯问题、翻杯子问题等。
公务员考试基本只考到这样的程度
例题:
1.现有6个一元面值硬币正面朝上放在桌子上,你可以每次翻转5个硬币(必须翻转5个),问你最少经过几次翻转可以使这6个硬币全部反面朝上?
A.5次
B. 6次
C.7次
D.8次
6/(6-5)=6
2.有8个房间,有7个房间关着灯,如果每次同时拨动4个房间的开关,经过几次拨动,灯全部关上?
A.3次
B.4次
C.5次
D.几次也不能
与房间数无关
7/(7-4)
不能整除,故几次也不行(最难也就到这种程度了)。