趣味思考
PYB不开心
这个作者很懒,什么都没留下…
展开
-
两个有趣的概率问题
首先考虑问题1: 从自然数1,2….n选择m个不重复的数,其中最大值的期望是多少? 假设一次试验中最大值是k,那么 P(k)=C(k−1m−1)C(mn)P(k) = \frac{C{k-1 \choose m-1}}{C{m\choose n}} E(Max)=∑k=mnP(k)k=∑k=mnmC(mk)C(mn)E(Max) = \sum_{k=m}^n原创 2016-06-01 11:28:40 · 1513 阅读 · 0 评论 -
猜测多项式
在知乎上看到这样一个问题,非常有趣,记录下来:假设现在有一个黑盒子,里面有一个多项式,每一个多项式都是正整数,我们每次往这个黑盒子里面输入一个正整数x,它就会返回一个带入x的结果,那么请问输入几次可以得到所有多项式系数呢?开始我是没有做出来的,我尝试带入1和-1,0之类的数然后看能不能建立方程组消元。结果当然失败了。但是我看到了一个提示:答案是2次。那意味着这道题目绝对有很巧妙的解法,使得两次获取的原创 2016-11-18 09:14:30 · 2213 阅读 · 0 评论 -
Python Challenge 0-9
这是一个神奇的网站….现在卡在第七题还没有做出来。。。(0)(0):较简单,首先尝试了238发现不对,然后尝试2^38次方即可成功跳转url.(1)(1):题目是这样:很容易想到将每个字母往后推2个,然后将下面哪一句话转换一下即可发现并不是答案而是让你对url进行decode,对url里面的map做一点微小的工作即可pass。(2):(2):如果不告诉你source page还是有点难想到,但是说了原创 2016-11-13 15:10:21 · 2080 阅读 · 0 评论 -
最大公约数和快速gcd
最大公约数有两种基本的求法:(1)辗转相除法(2)更相减损法,首先来证明一下:(1)证明gcd(a,b)=gcd(b,a(1)证明gcd(a,b) = gcd(b,a%b)假设a=k1m,b=k2m,a=sb+r假设a = k_1m,b = k_2m,a = sb+r可以知道r=a−sb=(k1−sk2)m,所以m是(b,r)的公约数可以知道r = a-sb = (k_1-sk_2)m,所以m是(b原创 2016-11-01 15:40:16 · 3261 阅读 · 0 评论 -
Python小技巧
(1)(1)如何将高维数据降维只需要一行代码就可以将树状结构的数据平扁化from collections import Iterabledef flat(s):return reduce(lambda x,y:x+flat(y) if isinstance(y,Iterable) else x+[y],s,[])print(flat([(1,2,3),[2,3],5,[1,[2,3,{4,5,(6原创 2016-07-21 16:37:51 · 867 阅读 · 0 评论 -
快速求解一个数位数的和
naive的方法就是一位一位的统计了,但是通过一个为运算的技巧,我们可以快速的求解这个问题。(1)不妨假设这个数不超过64位,利用下面代码for循环里面的计算,可以并行的求解8个字节的位数和。(1)不妨假设这个数不超过64位,利用下面代码for循环里面的计算,可以并行的求解8个字节的位数和。(2)接下来将val分布在8字节的和加起来(2)接下来将val分布在8字节的和加起来 注意这里采用对半相加的办原创 2016-10-17 12:34:29 · 1109 阅读 · 1 评论 -
华为面试题:求n对括号的所有合法表达式(两种简洁做法)
这个题目其实以前写过,但是现在再看,有了简洁有效的多的解法:一个DFS就搞定了。同时可以分析一下n对括号的合法表达式有多少种?F(n)=∑n−1k=0F(k)∗F(n−1−k)F(n) = \sum_{k=0}^{n-1}F(k)*F(n-1-k),具体思路很简单,但是闭式表达式我求不出来。def construct(n): def create(num1,num2,exp):原创 2016-08-08 23:16:51 · 1622 阅读 · 0 评论 -
关于切割绳子的思考
n个人抢一个一元红包,估计得到最小红包的那个人将有多少钱?这个问题可以转换为类似的问题,将一根绳子分成N段,最短的绳子的期望是多少?原创 2016-10-22 20:36:43 · 2364 阅读 · 0 评论 -
求出n个互异的数使得最小公倍数等于所有元素之和
(1)(1)方法1:这个是看了别人的办法得到的启示,对于任何一个n元组,假设其满足题意,设lcm(a1...an)=∑ni=1ai=xlcm(a1...an)=\sum_{i=1}^na_i=x.则考虑添加两个k1x,k2x使得n+2元组依旧满足k_1x,k_2x使得n+2元组依旧满足,其实这里问题转换成:寻找一个包含1的三元组,1,k1,k2满足题意1,k_1,k_2满足题意,这里利用到了如何求n原创 2016-08-08 23:06:15 · 544 阅读 · 0 评论 -
穷举+hash解一个数论问题
a4+b4+c4+d4=e4......1=<a,b,c,d,e<=1000,求所有满足方程的解。a^4+b^4+c^4+d^4 = e^4 ...... 1=<a,b,c,d,e<=1000,求所有满足方程的解。这个问题如果直接来一个四重循环穷举是不行的….10004=10000亿,以python的速度得跑上不知道多久..1000^4 = 10000亿,以python的速度得跑上不知道多久..原创 2016-07-19 14:33:15 · 461 阅读 · 0 评论 -
猴子拿香蕉的问题
这个题目挺有意思,但是不难。猴子要把TotalTotal个香蕉搬回DD米的老巢,每次能够拿的最大值是maxmax,假设猴子很贪嘴,每走一米就要吃一个香蕉,那么问猴子最多能够拿几个回去?我们来仔细分析一下这个问题(1)...(1)...首先可以肯定猴子每次拿最多的香蕉走是一定最划算的,因为背的太少可能一下就吃完了,假设拿b个和b-1个走一米,得到的结果是将b-1和b-2个香蕉向目的地运了一米,但是都只原创 2016-07-15 21:08:36 · 4939 阅读 · 2 评论 -
37定律的分析和模拟(随机数组的生成算法)
所谓三七定律,是指在n个候选中,你对于每一个候选只能选择或者放弃,不能回头反悔。那么抛弃前37%个,对于后63%个候选:选则第一个比前%37个候选好的。证明:假设抛弃前k个候选,那么选到最好的概率记作P(k)证明:假设抛弃前k个候选,那么选到最好的概率记作P(k)要求k使得P(k)最大:P(k) =∑ni=k+1 \sum_{i=k+1}^{n} P(第i个是最好的 )P(前i-1个最好的在前k个中原创 2016-07-22 14:15:15 · 4446 阅读 · 0 评论 -
关于炉石的奥弹打死精灵龙的分析
#import randomdef simulation(): T = 100000 dead = 0 while T: dragon = 0 people = 0 for i in range(3): a = random.randint(1,10000)#做出一个判断 if原创 2016-06-11 12:53:10 · 1478 阅读 · 0 评论 -
一行python能做什么!
主要收集了平常遇到的代码和网上的简单题目,然后尝试将代码压缩到一行,仅仅是娱乐一下~~~−−−−−(1)−−−−−−-----(1)------用一行python写出一个嵌套的字符串。def plat(ch,n):return''if ~n else ' '*(n-1)+ ch+ch[::-1][1:]+'\n'+plat(ch+chr(ord(ch[-1])+1),n-1)结果如图: 上面这个返原创 2016-10-11 12:37:20 · 3025 阅读 · 0 评论