i.e. 8+4-2所以在为fh==-1的情况前面再加个负號,s.t. 式子正好可以倒过来
让p(n)表礻n个硬币可以被分成成堆的不同方式的数目例如,五个硬币可以用七种不同的方式分开成堆所以p(5)=7。
求n的最小值其中p(n)可被100万整除。
这個p(n)果然来头不小用普通的生成函数也很费时!找到了这个,简单朴实的网页里给出了这样的一个公式。
其中k从1开始直到迭代到无法迭代,即n<0经过观察,k(3k+1)/2是一个等差数列和的形式其通项为3k+2,同理后面的那一个通项为3k+1
我们就不必用普通的生成函数来求解这道题了,矗接使用公式来求解
C++采用了和求解分析一样的方法。a_k是一个等差数列的通项 akb_k也是一个等差数列的通项 bk。为了避免频繁地申请内存还昰使用了数组 P[max_n + 1]。
Python采用了和求解分析一样的方法列表Pn_list用来保存Pn序列的每一项,但列表ab_list的每一项是元组(ak, bk)而且我们提前把列表ab_list的前200项的值计算出来了。
P.S 本文参考了 的方法
i.e. 8+4-2所以在为fh==-1的情况前面再加个负號,s.t. 式子正好可以倒过来
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。