ACM-数论
Nicetomeetu-
没有
展开
-
HDU 4344 Mark the Rope Pollard_Rho大数分解
PS:图片由作者用wps制作,使用请注明链接,O(∩_∩)O谢谢!注意如果n的质因数分解只用到一个质数时,要多除一个质数。如对Miller-Rabin有疑问,请参考作者其他博客:Miller-Rabin算法详解代码如下:#include #include #include #include #include #include using namespace s原创 2017-05-24 19:03:36 · 498 阅读 · 0 评论 -
POJ 2429 GCD & LCM Inverse Pollard_Rho大数分解+Miller_Rabin
PS:图片由作者用wps制作,使用请注明链接,O(∩_∩)O谢谢!代码如下:#include #include #include #include #include #include using namespace std;typedef long long int ll;const int MAX_SIZE = 1000;const ll INF = 0x原创 2017-05-24 17:46:45 · 568 阅读 · 0 评论 -
NJUST 1722 所有的平方差 Pollard_Rho大数分解
原题链接:所有的平方差代码如下:#include #include #include #include #include #include #include using namespace std;typedef long long int ll;const int MAX_SIZE = 3000;const ll mod = 10000000019;ll原创 2017-05-25 21:56:43 · 692 阅读 · 0 评论 -
Miller-Rabin素性测试算法详解
看了一些别人的博客,发现里面涉及到的公式没有证明,于是就打算自己写一篇比较详细的讲解。先看两个引理及其证明(建议把证明搞懂)。PS:以下图片均为作者用wps制作,如想使用请附上作者博客链接,谢谢O(∩_∩)O。看完了上面的引理,那就可以正式开始Miller-Rabin算法的讲解了。背景:素性测试(即测试给定的数是否为素数)是近代密码学中的一个非常重要的课题。虽然Wilson原创 2017-05-24 14:54:09 · 26810 阅读 · 7 评论 -
POJ 1930 Dead Fraction 数论
别人说这是小学奥数水平的题目,orz,作者受到了极大的打击。如果是用笔写的话相信很多人都能将循环小数化成分数。来个例子吧:0.333.....怎么化成分数呢?设 x = 0.333......10x = 3.33......10x - x = 39x = 3x = 1 / 3和这个思路类似,对于一般情况,我们可以推导出一个公式(推导出了公式才方便编程)。引用别人原创 2017-05-21 15:48:50 · 474 阅读 · 0 评论 -
AOJ 0005 GCD and LCM
辗转相除法求GCD。#include #include #include #include #include using namespace std;typedef long long int ll;ll GCD(ll x, ll y){ return !y ? x : GCD(y, x % y);}ll LCM(ll x, ll y){ retu原创 2017-04-28 00:44:14 · 468 阅读 · 0 评论 -
(2017多校训练第二场)HDU - 6050 Funny Function 找规律 + 逆元
题目链接:点击打开链接比赛的时候思路跑偏了,总是纠结于找第一行的每个元素对于答案的贡献,找了一个多小时然后放弃了。暴力打表然后找规律。因为存在除法取模的问题,所以要用到逆元。代码如下:#include using namespace std;typedef long long int LL;const int MAX_N = 1000;const int M原创 2017-07-29 19:44:32 · 460 阅读 · 0 评论 -
(2017多校训练第二场)HDU - 6053 TrickGCD 初见莫比乌斯
题目链接题意:给一个长度为n的数组A,让你构造等长的数组B,B数组中的元素取值为小于等于A数组中对应位置的元素,现在询问B数组中的gcd大于等于2的方案数思路:(已更新容斥部分)我们令g(d)为gcd为d的倍数的答案,那么所以根据容斥原理最后我们要求的答案为g(2)+g(3)+g(5)-g(6)+g(7)-g(10)+g(11)+g(13)-g(14)+g(15原创 2017-08-01 01:19:37 · 366 阅读 · 0 评论 -
(2017多校训练第四场)HDU - 6069 Counting Divisors 区间筛
下面的式子很容易得到。所以现在我们的问题就是把1e12量级的数字质因数分解,然后算用的素因子个数就行了。注意到一个数字a最小质因子肯定是小于等于根号a的。所以我们只需要打出1到1e6之间的素数表就行了。如果一个1e12次方量级的数字a,在被[1, 1e6]内的素数分解了之后,剩下的数字还不是1,那么剩下来的那个数字肯定是一个大于1e6的质数。我们可以选择区间筛的方法,用[1, 1e原创 2017-08-04 20:52:18 · 433 阅读 · 0 评论