转移矩阵很容易求就是|0 1|,第一项是|0| |1 1| |1| 然后直接矩阵快速幂,要用到费马小定理 :假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1(这东 ...
分类:
其他好文 时间:
2017-05-20 14:55:53
阅读次数:
177
辗转相除法用得比较多,今天Mark一下。具体做法就是:如果q和r分别是m除以n的商及余数,即m=nq+r,那么m和n的最大公约数等于n和r的最大公约数。 代码如下: ...
分类:
编程语言 时间:
2017-05-18 21:28:57
阅读次数:
190
题意: 给n个正整数,求有多少个GCD为1的子序列。答案对1e9+7取模。 1<=n<=1e5,数字ai满足1<=ai<=1e5 分析: 设f(x)表示以x为公约数的子序列个数 那么ans=f(1)- Σf(pi) + Σf(pi*pj) - Σf(pi*pj*pk) ........ 注意到对于一 ...
分类:
其他好文 时间:
2017-05-17 10:15:41
阅读次数:
174
链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2028 题目要求:就是求最大公倍数,我百度了一下,最好实现的算法就是: 公式法 由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍 ...
分类:
其他好文 时间:
2017-05-14 17:55:00
阅读次数:
237
最大公约数。 计算$x$与$i$的最小公倍数,就是这些人至少需要和几杯,最小公倍数除以$x$就是要买几瓶。 ...
分类:
其他好文 时间:
2017-05-14 10:42:20
阅读次数:
143
欧几里得算法就是我们常说的辗转相除法,辗转相除法可以用来求最大公约数,知道最大公约数还可以求最小公倍数。gcd在好像也有库函数__gcd int Gcd(int a, int b) { while(b != 0) { int r = b; b = a % b; a = r; } return a; ...
分类:
编程语言 时间:
2017-05-13 14:25:12
阅读次数:
210
转载自农夫三拳的一篇文章 欧几里德算法和扩展欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约 ...
分类:
编程语言 时间:
2017-05-12 22:20:59
阅读次数:
302
题目意思:给出一个n个数序列:a1,a2,...,an (n的范围[2,100000],ax的范围[1,1e9] 然后想构造一个beautiful的序列 b1,b2, ..., bn,使得最大公约数 gcd(b1,b2,...,bn) > 1。任意ai,ai+1 可以用 ai-ai+1, ai+ai ...
分类:
其他好文 时间:
2017-05-08 14:15:29
阅读次数:
215
1876: [SDOI2009]SuperGCD Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比 赛计算GCD。有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是 ...
分类:
其他好文 时间:
2017-05-06 19:09:55
阅读次数:
386