有N个硬币分拣机设计方案,每个硬币分拣机设计方案有无数个,问有多少方案

两个人能在电话中抛掷硬币吗? | 科学人 | 果壳网 科技有意思
两个人能在电话中抛掷硬币吗?
本文作者:matrix67
信息世界给我们带来了很多便利,同时也没有给我们少添麻烦。物理世界中能轻松办到的事,在信息世界中却能让人伤透脑筋。让我们来考虑这样一个场景:两个人在电话中为一件小事争执不休,最后双方决定通过抛掷硬币来解决争端。在没有第三者的帮助下,通话双方有办法在电话里模拟抛掷一枚公平的硬币吗?
一些不太理想的方案
最容易想到的方案便是,A 先抛掷一枚硬币,然后在电话中把结果告诉 B。这种方案给了 A 很大的权力——A 完全可以选择谎报硬币抛掷结果,反正 B 也看不到真实的情况。如果通话双方彼此不信任的话,这种方案是不可行的。
另一种常用的方法就是两人在电话上玩语音版的“石头剪子布”——双方同时喊出“剪刀”、“石头”、“布”中的一个。可惜这种方案的公正性同样值得商讨:我们不能忽略两人玩心理游戏实力过于悬殊,或者一方可以不被察觉地延迟出招等不公平情况的出现。
下面这个方案则多少让人感觉更公正一些 :A 随便考 B 一道题,比方说“果壳网有多少个主题站”;如果 B 回答对了,就算 B 赢得这场争执,否则就算 A 获胜。这种方案似乎更靠谱,但难免还是漏洞百出。首先,公平性依然是老大难:B 有可能非常博学,没有什么答不上来的;或者 A 知道 B 的“弱点”,故意考 B 一道他不会的题目。其次,A 仍然有耍赖皮的空间—— A 可以出一道有多个答案的脑筋急转弯,比如说“树上七(骑)只猴,树下一只猴”,无论 B 回答什么,A 都可以判 B 答错。另外还有一种不太要命,但也不容忽视的隐患:出于某种目的,B 可以故意装作答不上来。也就是说,如果 B 知道题目的答案,B 就拥有了故意输掉的权力,这不符合抛掷硬币的精神——听天由命。
一个几乎完美的方案
不过,虽然漏洞多多,思路却值得借鉴。为了避免上述漏洞,A 提出的问题最好是二选一的问题,两个选项都有可能成为答案,概率各占 50%;回答它没有任何技巧,只能凭借猜测;而答案则必须是唯一的,并且很容易验证答案的正确性。细心想想,这样的问题倒也不少——比方说今天的某某报纸头条新闻中句号的个数是奇数还是偶数,或者圆周率前 51 位中小于 5 的数字多还是大于等于 5 的数字多。A 提出这样的问题后,要求 B 立即作答;面对这样的问题,B 没有任何答题技巧可言,只能瞎猜一个。之后两人便可花时间验证答案的正确性:如果 B 正好猜对了,视硬币抛掷结果为正,B 赢得这场争执;如果 B 猜测有误,则硬币抛掷结果为反,A 最终获胜。
这样的方案几乎是完美的了,我们只差一点了——这个方案不具有可重复性。之前出过的题目是不能重复使用的,一是为了避免 B 事先作弊,二也是考虑到通话双方所处环境得有验证答案的工具。因此,每次需要抛掷硬币时,A 都要想出一个全新的“公平问题”来。于是我们想到,能否构造出一套数学规则,让我们产生出无穷无尽的、纯数学形式的公平问题呢?
公平的电子抛币协议
在数学中,有一个非常典型的“正则易、逆则难”的问题:你很容易算出两个数的乘积是多少,却没法迅速找出一个大数等于哪两个数的乘积。
有些数能够表示成更小的数的乘积,比如 8 可以写成 2×4,35 可以写成 5×7。这样的数就被称为“合数”。另一些数则比较特殊,它不能写成更小的数的乘积,比如 7、23、67、191 等等,这样的数就叫做“素数”。素数拥有很多美妙的性质,它们不但让数学家们如痴如醉,在信息安全领域也有很多漂亮的应用。
选取两个素数,比方说 23 和 67,然后把它们乘在一起,能够得到一个新的数 1541。不过,除非一个数一个数地去试,否则你没办法判断出 1541 可以分成哪两个数之积。也就是说,对于“1541 能分成哪两个数的乘积”这个问题,回答起来相当困难,验证答案的正确性却很容易。
利用这个思路,我们能得到很多公平的电子抛币方案。比方说,先让 A 抛掷一枚硬币,如果正面朝上,就选择两个 1000 左右的素数;否则就选择三个 100 左右的素数。然后 A 把选出的素数乘起来,把结果告诉 B,让 B 猜猜看这个数是两个数的乘积还是三个数的乘积。要想获得正确答案,B 没有什么更高明的手段,只能随便猜一个。然后,A 向 B 揭晓答案,并告诉 B 他刚才选了哪几个素数,让 B 验证答案的真实性。
理论上说,这种做法是绝对公平而随机的,不过过程却太麻烦了一些,在现实生活中没法普及。不过,在信息世界中,类似的方案已经得到了广泛的应用。利用计算机,我们可以得到几十上百位的素数,并能迅速算出这些大素数的乘积,但要想把乘积分解开来几乎是一件不可能完成的任务。可以说,大素数分解不但是电子抛币协议的理论依据,也是消息加密、电子签名、身份验证等一切信息安全的根基。在人们为信息通讯的各种麻烦事儿而头疼时,古老的数论重新绽放光彩,这可以说是数学与科技的又一次漂亮的结合。
你可能感兴趣
很赞……很多数学方法都在影响我们的生活,虽然是隐藏在幕后
大部分事情都是猜测难,验证易吧,不过能来干这事情的似乎只有这个了。
matrix大神也来果壳了??
理论上说,如果B刚好是一位Linux用户,电脑又在手边的话,这个程度的素数分解,用factor命令就可以很轻易的办到,刚才试了一下,几乎按下回车的同时答案就出来了……
两个人的数学储备会造成新的不公平,比如我知道200以内的素数,而我朋友只知道100以内的,而且我是数学系的,那么我会对数有更多的敏感性~~~
经你一提 发现果然是啊引用 octo 的回应:matrix大神也来果壳了??
引用 octo 的回应:matrix大神也来果壳了??于是果断关注matrix大神
如果两人都是用手机通话,可以随便出一个数字,比如332,开三次方根,先让一人选择倒数第二位字是偶数还是奇数,选定后各自用计算器验算。这就很方便而且公平且可以不断重复了。
经济学爱好者
相对来说,LS的方法太过简易了。无法保证手机通话的时候对方手边没有计算器。
科学松鼠会成员,信息学硕士生
这就是典型密码学的问题嘛~~~1000太小的话,多弄几位就好了~~~
这样还不如A报一个MD5值,然后给B两个选项,让他猜哪个选项加密后结果是刚刚给的。实际操作的话,只用报出MD5值的前几位就行了。这样就不会有人把MD5解开的情况了吧
科学松鼠会成员,信息学硕士生
引用 南柯一梦 的回应:这样还不如A报一个MD5值,然后给B两个选项,让他猜哪个选项加密后结果是刚刚给的。实际操作的话,只用报出MD5值的前几位就行了。这样就不会有人把MD5解开的情况了吧MD5的话已经有人做出来collision了(还是中国人,当年这个新闻很热),也就是说要是密码验证的话MD5已经不足以采信了……这种方法换成SHA1或者还可以满足一时的需要,不过也危险。最保险的还是最传统的质因数分解。
可视电话可以很容易的解决问题!
引用 萧四无 的回应:相对来说,LS的方法太过简易了。无法保证手机通话的时候对方手边没有计算器。就是要有计算机才能验算。当然是报出个数后立即就要决定奇偶,不能留太长时间给人计算。
时间万事万物只有上升到数学,才是科学的!
思路很好,关键不是身边有没有计算器等等,因为将这样的思路复杂化就可以解决计算器等等的问题,最起码难度会提高很多。。。新人飘过~
引用 lucifermm 的回应:如果两人都是用手机通话,可以随便出一个数字,比如332,开三次方根,先让一人选择倒数第二位字是偶数还是奇数,选定后各自用计算器验算。这就很方便而且公平且可以不断重复了。一,倒数位数和计算器最大显示位数相关,无法事先确定双方自用计算器相同,故,方案设计不严密。二,跟分解素数积比还是太简单了。既然要求双方身边有自用计算器,在让对方选奇偶数的时候,次方根顺手就能按出来,装下蒜就出结果了。没有计算机,分解大质数积就很难很快出结果。但质数相乘的结果,用纸笔就能出来。这个问题的关键就在加密和解密的难度要拉开较大的差距,你用上自用计算器恰恰抹平了这种差距。
哈哈哈哈 nice
引用 硬光饼 的回应:可视电话可以很容易的解决问题!
好!以後試試!
我似乎有一个更简单的办法:A任意出一道结果为无限位数的除法算术题,比如47/51=0.........让B
选择小数点后第N(最好小于10)位数是偶数,还是奇数。这样子最大的好处就是算法简单,每个人都可以做。还可以马上在手机上找到结果。因为大家都有手机,所以应该让B 提前作出一个选择,在A提问后马上回答。
有趣~值得探讨 虽然没看懂某些回复的idea
引用 硬光饼 的回应:可视电话可以很容易的解决问题!QQ视频都可以搞诈骗的今天可视电话靠不住除非制定他在视频通话的过程中作出一些什么行为来验证
偶是学密码学的,很亲切~我认为这是普及密码学和信息安全技术原理的好文章~
这么有难度的东西只有大家都是理性派的时候才能用上,我的朋友大部分连素数是什么都不知道,玩这游戏之前还得先普及一下知识,简直自找麻烦。还是这位提出无限位数的除法算术题的童鞋的办法比较简单。
那么掷硬币还有必要吗?
很好。。。完全看不懂的说。。。我的理解能力果然后退了啊
如果 一定有什么事情 要在打电话中二人选一的话 可以约定买某日报 某版某行第几个字是奇数笔画还是偶数笔画。
买完还能看报。
以后会试试!
显示所有评论
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:下次自动登录
现在的位置:
& 综合 & 正文
动态规划理解-Dynamic Programming
【原文见: http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg】
Dynamic programming (简称DP)可以用来解决一类很重要的问题。解决这类问题将会极大的提高你的能力。我将试着帮助您了解如何使用DP来解决问题。这篇文章以例子作为基础,因为空谈理论不太容易理解。
如果您不太想阅读某节或者已经知道了所要讨论的话题-略过它去读下面的部分。
Introduction (Beginner)
动态规划作为一种技巧,通常基于一个递推方程和一个(或者多个)初始状态。一个问题的子问题可以从前面已经知道结果的问题中得到。使用DP通常可以得到多项式的时间复杂度,因此比起回溯,暴力等方法,它显得更加快些。
现在我们借助一个例子来了解下DP的基础知识:给定N个硬币,它们的面值是(V1,V2,...,VN),并且提供一个总和为S。现在需要找出一个方案,使得用最少的硬币构成S(我们可以无限次使用某种面值的硬币),或者说明根本不可能有一种方案可以组成S。
现在让我们开始构造一个DP的解决方案: 首先我们需要找到一个已经使用最优方案的状态,借助它,我们可以得到下一个最优方案的状态。
它是一个用来描述某个问题的子问题,某种情况的一个方式。例如,一个状态可以是某个硬币总和i(i &= S)。比状态i更小的状态可以是任意的硬币总和j(j & i)。为了找到一个状态i,我们需要找到所有的小的状态j(j & i)。找到组成硬币总和i的最少硬币总数之后,我们可以很容易的计算下一个状态--i+1的最优方案。怎样找出这些状态?
非常简单-对于每一个硬币j,Vj&=i,查询一下构成i-Vj硬币总和所需要的最少硬币数目(我们之前已经计算过了)。不妨假设这个数字是m,如果m+1小于所求得硬币总和为i的最少硬币数量,我们更新它的状态。为了更好的理解这个问题,我们举例如下: 给定面值为1,3和5的硬币,给定的硬币总和S为11。
首先我们标记状态0(硬币总和0)所需要的最少硬币数目为0.下面我们计算硬币总和1。首先,我们需要标记出这个状态未找到最优解(赋值为无穷大就可以了)。然后我们看到只有面值为1的硬币小于等于当前的总和。通过分析,我们可以看到1-V1=0,并且硬币为0的方案已经计算好了。因为我们在这个方案基础上加上了1,因此我们得到了总和为1的一个方案,所需硬币个数为1。对于这个硬币总和,这是唯一能够找到的方案。我们记下状态。然后我们处理下一个状态-总和为2.我们发现少于这个总和的只有第一个硬币1。对于硬币总和(2-1)=1的最优解是硬币1.硬币1加上第一个硬币将得到硬币总和为2,并且可以用2枚硬币得到硬币总和2。这对于硬币总和2来说是最优的也是仅有的方案。下面我们继续处理硬币总和3。由于我们已经分析了两种硬币总和,并且第一个硬币和第二个硬币的面值为1和3。我们先看第一个,不难发现,可以通过2(3-1)构建出总和为3的一种方案。对于硬币总和为2来说我们找到的最优解法需要2枚硬币,因此硬币总和3的新的方案需要3枚硬。现在让我们来看第二个硬币。我们可以从0的基础上假上3得到硬币总和3.我们知道硬币总和为0的情况需要0枚硬币。因此硬币总和3仅需要一枚硬币即可-3。我们看到这个方案要比前面一个方案所需要的硬币数量上,因此我们更新它,并且标记它仅需要一枚硬币就能得到。对于硬币总和4,我们进行同样的处理,得到的结果是2个-1+3。如此下去。伪代码:
Set Min[i] equal to Infinity for all of iMin[0]=0For i = 1 to SFor j = 0 to N - 1
If (Vj&=i AND Min[i-Vj]+1&Min[i])Then Min[i]=Min[i-Vj]+1Output Min[S]
结果我们就得到了一个组成硬币总和11需要3枚硬币的方案。此外,如果如果我们记录下从前一个状态得到当前状态所需要的硬币,我们可以找出组成该硬币总和所需要的所有硬币。例如:要组成硬币总和11,我们可以通过面值为1的硬币加上面值为10的硬币。为了得到10,我们需要得到5,而5需要从0,因此我们找到了所使用到的硬币:1,5和5。
了解了DP的一些基本的套路,现在让我们从一个不同的角度来看待这个问题。无论何时对于一个硬币总和我们发现了一个更优的解,我们都需要去更新它。在这种情况下状态并不是连续计算的。继续考虑上面的那个例子。已知了硬币总和为0需要0枚硬币。现在我们试图在所有已经知道的结果中加上第一个,硬币(面值为1)。如果硬币总和t比起它的前一个状态需要的硬币数量更少,我们将更新它。对于第二个硬币,第三个硬币,和剩下的都是这样处理。例如,我们首先在硬币总和0上加上1得到硬币总和1.因为我们还未找到一个方法组成1-因此这是目前找到的最佳方案,我们标记S[1]=1。通过在硬币总和1上加上1,我们得到了硬币总和2,我们标记S[2]=2。然后对于第一个硬币依次下去。当第一个硬币处理完之后,取出第二个硬币(面值为3),并在所有已经找出的硬币总和上加上3。在0上加3我们得到了硬币总和3需要一枚硬币,到目前为止,S[3]是等于3的,而现在新的方案要比这个先前的方案要更加的好,我们更新它并将它标记为S[3]=1。在硬币总和1上加上相同的硬币,我们得到了可以用2枚硬币得到硬币总和4。之前我们发现的硬币总和4需要4枚硬币组成;现在找到了一个更好的方案,我们更新S[4]为2。对于下面的硬币总和,我们照着上面这样一次下面-一旦一个更优的方案找到,结果将会被更新。
Elementary
之前我们已经讨论过了非常简单的例子。现在让我们看看在一些复杂问题中如何找出一种从一个状态转移到另外一个状态的方法。在此之前,我们将会介绍一个新的词汇--转移关系,它使得一个较低的一个状态能和较高的状态联系在一起。
让我们看看它是如何工作的:
给定N个数字序列-A[1],A[2],...,A[N]。找出最长不下降子序列。
正如上面所说,我们需要找出怎样定义代表子问题的一个"状态",并找出一个解决方案。注意在大多数情况下,状态只依赖与较低的状态而独立与较高的状态。我们定义状态i为最后数字为A[i]的最长不下降子序列。这个状态只保存这个序列的长度。注意对i&j而言,状态i和j是独立的,也就是说在计算j状态的时候,是不会影响状态i的。现在让我们看看这些状态怎样互相联系的。在找出所有小于i的状态解决方案之后,我们会找状态i,首先我们初始化它的结果为1,也就是仅仅包含自身。现在对每个j&i,我们看从它是否能够到达状态i。只有当A[j]&=A[i]以后才可以,才能保证整个序列不下降。 因此如果S[j](为状态j找出的方案)+1(A[i]被增加到以A[j]作为结尾的序列中)要比状态i已经找到的方案要更加好的话(也就是 S[j] + 1&S[i]),我们使得S[i]=S[j]+1。这样我们可以不断的找出每一个状态i的最优方案,知道最后一个状态N。
现在我们看看对于一个随机生成的序列: 5,3,4,8,6,7 整个过程如何进行:
给定一个有N(1&N&=1000)个顶点和正权重的无向图。找出从顶点1到顶点N的最短路径,或者说明这样的路径不存在。
提示:在每一步中,在所有没有被检查的顶点中,如果找出从1到该点的一个最短路径,找出具有最短路径的一条。
试着解决TopCoder比赛中的下面一些问题:
- 2003 TCCC Semifinals 3
- 2004 TCCC Round 4
- 2004 TCCC Round 1
Intermediate
现在让我们看看如何解决2维DP问题。问题:
一个拥有N*M个单元的格子,每一个里面都有着一定数量的苹果,数量已经给定。现在你位于左上角。每一步你可以向下走或者向右走。问你能够收集到最多多少个苹果。
这个问题可以向其他DP问题一样来解决;几乎没有差别。首先我们需要找出一个状态。首先我们需要注意到到某个单元里最多有两种方法-要么从它的左边过来(如果当前格子不是在第一列的话),要么从上方过来(如果它不是在最上面的行的话)。为了找到该单元的最优方案,我们首先需要找到到达它的单元的最优方案。从上面的叙述中,我们可以很容易的得到转移关系:S[i][j]=A[i][j]+max(S[i-1][j],if i&0; S[i][j-1],if j&0) (这里的i代表行,j代表列。左上角的坐标为{0,0};A[i][j]为i,j单元格中的苹果数量)。
S[i][j]需要在每行中从左到右计算,并且从上到下计算每一行,或者从上到下计算每一列然后从左到右处理每一列。
For i = 0 to N - 1
For j = 0 to M - 1
S[i][j] = A[i][j] +
max(S[i][j-1], if j&0 ; S[i-1][j], if i&0 ; 0)Output S[n-1][m-1]
- 2003 TCO Semifinals 4
- 2003 TCCC Round 4
Upper-Intermediate
这节将讨论如何处理带有约束条件的DP问题。
下面是一个例子:
给定一个拥有N个顶点和正权重的无向图G。你在出发前拥有M钱,为了通过顶点i,你需要付S[i]钱。如果你没有足够的钱-你不能通过顶点i。现在要求在上面的条件下找出从顶点1到顶点N的最短路径;或者说明这样的路径不存在。如果存在多条相同长度的路径,输出最便宜的一条。条件: 1&N&=100;0&=M&=100;对每个顶点i,0&=S[i]&=100。正如我们所看到的,这和经典的Dijkstra问题(找出两个顶点间的最短距离)不同的是,这里有一个额外的提交。在经典Dijkstra问题中我们用到了一个一维数组Min[i],用来标记已经找到的从起点到i的最短距离。尽管如此,在这个问题中,我们应该也要保存我们拥有钱的信息。因此将数组扩展到M[i][j]来代表从起点到顶点i的最短距离剩下j钱,也是合情合理的。这样问题就被规约到普通的寻找路径的算法了。在每一步中我们找到没有标记的状态(i,j),然后我们将其标记为已访问过(后面将不再使用),对每个邻居结点,我们查看是否到它的最短距离可以更新。这个方案将会由记录最小值的Min[N-1][j]来表示(状态中具有相同值的最大的j,也就是最短路径的距离一样)。
Set states(i,j) as unvisited for all (i,j)Set Min[i][j] to Infinity for all (i,j)Min[0][M]=0While(TRUE)Among all unvisited states(i,j) find the one for which Min[i][j]is the smallest. Let this state found be (k,l).If there wasn't found any state (k,l) for which Min[k][l] isless than Infinity - exit While loop.Mark state(k,l) as visitedFor All Neighbors p of Vertex k.
If (l-S[p]&=0 AND
Min[p][l-S[p]]&Min[k][l]+Dist[k][p])
Then Min[p][l-S[p]]=Min[k][l]+Dist[k][p]
i.e.If for state(i,j) there are enough money left forgoing to vertex p (l-S[p] represents the money thatwill remain after passing to vertex p), and theshortest path found for state(p,l-S[p]) is biggerthan [the shortest path found forstate(k,l)] + [distance from vertex k to vertex p)],then set the shortest path for state(i,j) to be equalto this sum.End ForEnd WhileFind the smallest number among Min[N-1][j] (for all j, 0&=j&=M);if there are more than one such states, then take the one with greaterj. If there are no states(N-1,j) with value less than Infinity - thensuch a path doesn't exist.
- 2003 TCO Online Round 4
- SRM 150 Div 1
- SRM 197 Div 2
- SRM 165 Div 2
- SRM 208 Div 1:
给定一个拥有M行,N列的矩阵(N*M)。在每一个格子中有一些苹果,你从矩阵的左上角出发,可以向下或者向右走。你需要到达右下角。然后你需要通过每一步向上走或者向左走回到左上角。回到左上角之后,你需要回头再到右下角。找出你能够收集的最大苹果数。当你经过一个格子的时候-你会收集到其中所有的苹果。条件: 1 & N,M &= 50;每个格子里面的苹果数在0到1000之间(包括0和1000)。
首先我们会注意到这个问题和经典的问题(在这篇文章的第三节提到的)有点相似,在那个问题中我们只需要从左上走到右下,然后收集尽量多的苹果。如果能将这里的问题规约到那个问题就太好了。再仔细的读题-我们应该怎样修改才能够使得它能够使用DP来解决呢? 首先我们观察到我们可以将第二条路径(从右下角走到左上角)看作从左上走到右下的一条路径。这个没有什么区别,因为一条从底到上的路线,可以看作相反方向从上到底的路线。通过这种方法,我们得到了三条从上到下的路径。这无疑减少了问题的难度。当两条路径相交时(如下图),我们将称呼这三条路径叫做 左,中,右。
这样我们得到了三条路径,我们将他们考虑为左,中和右。此外,我们还会看到一个最优的方案是不会有相交的地方的(出了左上角和右下角)。因此对于每一行y(除了第一行和最后一行),他们三条线的x坐标分别为x1[y],x2[y]和x3[y]: x1[y]&x2[y]&x3[y]。 在这步做完之后,DP的方案就变得非常明显了。考虑第y行。假定我们已经找到了能够获得最大苹果的路径, x1[y-1],x2[y-1]和x3[y-1]。从他们基础之上,我们找到对于第y行的最优策略。现在我们已经找到了由一行转移到另一行的唯一的方法。设Max[i][j][k]代表在y-1行,并且三条路径的终点在i,j和k能得到的最大苹果数。 对于下一行y行,对于每一个M[i][j][k]加上在单元格(y,i),(y,j)和(y,k)中的苹果数。接着我们继续向下走。在我们移动之后,我们需要考虑到路径可能向右移动了。为了避免出现路径相交的情况。我们首先应该考虑左边路径的右边,然后考虑中间的路径,然后右边的路径。为了更好的理解向右移动,取出每一个可能的对,k(j&k),对于每一个i(i&j)考虑从位置(i-1,j,k)移动到位置(i,j,k)。左边的路径完成之后,处理中间的,做法类似,最后处理最右边的。
- SRM 178 Div 1
附加的注意点:
当我们阅读完问题之后并着手解决它时,首先看看它的约束条件。如果一个多项式级的算法,那么一个DP的方案是可行的。在这种情况下,试着去找出如果存在一个状态(子问题),能否推出下一个状态(子问题)。如果发现了之后,应当考虑如何从一个状态转移到另外一个状态。如果它看起来是DP问题,但是你找不出状态,那么试图将其转换为另外一个问题(就像上面第5节的问题一样)。
文中提到的问题:
【上篇】【下篇】博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用一元人民币兑换成1分、2分和5分硬币,共有多少种不同的兑换方法?求C语言源码(最好加上注释!)
[问题点数:100分,结帖人cn_redbird]
用一元人民币兑换成1分、2分和5分硬币,共有多少种不同的兑换方法?求C语言源码(最好加上注释!)
[问题点数:100分,结帖人cn_redbird]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|> 问题详情
设袋中装有m枚正品硬币,n枚次品硬币(次品硬币的两面均印有国徽),在袋中任取一枚,将它投掷r次,已知每次都是
悬赏:0&答案豆
提问人:匿名网友
发布时间:
设袋中装有m枚正品硬币,n枚次品硬币(次品硬币的两面均印有国徽),在袋中任取一枚,将它投掷r次,已知每次都是国徽,则这枚硬币是正品的概率为多少?
您可能感兴趣的试题
1掷三颗骰子,已知所得三个点数都不一样,这三个点数含有1点的概率为(&&)2某电路由元件A与两个并联元件B,C串联而成,若A,B,C断路与否相互独立,且它们断路的概率分别为0.3,0.2,0.3,则此电路断路的概率为(&&)3四个人独立地猜一谜语,他们能够猜破的概率都是1/4,则此谜语能被猜破的概率为(&&)4某射手在三次射击中至少命中一次的概率为0.875,则这名射手在一次射击中命中的概率为(&&)
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:}

我要回帖

更多关于 硬币组合问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信