数论
文章平均质量分 69
YanzheShi
这个作者很懒,什么都没留下…
展开
-
hdu5223(GCD)
题目链接:点击打开链接题意:首先给定数组中有多少个数,只告诉你他们最小值为1,不告诉你每个数字是多少,要求根据给定区间中数的最大公约数,复原原来的序列。思路:先把所有的数初始化为1,然后根据指定问题,如果某一区间的最大公约数是ans, 那么这个区间中的所有数字都是ans的倍数,所以,把区间中的每个数字都赋值为原数字和ans的最小公倍数即可。这道题本来是一道水题,但由于自原创 2015-05-03 09:35:59 · 1463 阅读 · 0 评论 -
一些斐波那契恒等式及证明。
首先说明斐波那契数列的定义:用F[i] 表示斐波那契数列的第i项,F[1] = 1, F[2] = 1, 当n >= 3时,F[i] = F[i-2] + f[i-1]。斐波那契恒等式:1. F[1]^2 + F[2]^2 + F[3]^3 + …… +F[n]^2 = F[n]*f[n+1];证明:F[1]^2 = F[1] * F[2]; F[2]^2 = F[2] *原创 2015-08-15 10:38:51 · 3144 阅读 · 0 评论 -
hdu5400
根据题意,用数组ch[i]记录a[i]和a[i - 1]的差值, len[i]记录到a[i]为止形成的最长的序列长度。根据题意len[i] = len[i-1] + 1(即a[i] 可以添加的前面的序列)的情况有:1. ch[i] 等于 ch[i-1] 且ch[i] 等于d1或d2。 因为根据题意公差为d1或d2的等差序列都满足条件。 2. ch[i] 等于 d2 而且 ch原创 2015-08-18 21:15:47 · 595 阅读 · 0 评论 -
hdu5317 RGCDQ
首先计算出所有的f,这里容易超时,注意对优化。 易知f中的最大值为7,然后用一个数组d[i][j]记录f[1]到f[i]中有多少个j,这个用递推可得。 那么如果给定区间L, R, 则f[R][j] - f[L - 1][j]可算出1到7各出现了多少次, 根据这些次数就可以找出最大公约数了。代码如下:#include #include #include using namespace s原创 2015-07-28 19:00:45 · 655 阅读 · 1 评论