![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM---数论
Keaper
这个作者很懒,什么都没留下…
展开
-
POJ 2689 Prime Distance(大区间素数筛法,两次筛法)
题目链接:http://poj.org/problem?id=2689题意:求一个区间 [L,U] 内的差值最大的和差值最小的相邻素数对。(1题解:维基百科:埃拉托斯特尼筛法单纯打表是不行的,L,U的范围太大,不能直接求出所有素数。对于int范围内的合数来说,最小质因子必定小于2^16。所以先用筛法选出50000内的素数即可,因为50000的平方大于int范围了。再用这些素数去筛出原创 2016-03-14 00:31:03 · 1944 阅读 · 0 评论 -
CCF 有趣的数
题目:问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。 因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。 请计算恰好有n位的有趣的原创 2016-11-18 20:06:07 · 1176 阅读 · 0 评论 -
Lucas定理(大数组合数取模)
Lucas定理可以用来求大数组合数取模。LL f[200000];void init(int p){ f[0] = 1; for(int i = 1; i <= p; ++i) f[i] = f[i-1] * i % p;}LL pow_mod(LL a, LL x, int p){ LL ret = 1; a %= p; w原创 2016-08-06 10:37:52 · 573 阅读 · 0 评论 -
2016 Multi-University Training Contest 7
1. 1002-HDU 5810 Balls and Boxes题意:给定n个球,m个盒子,将n个球抛入m个盒子,对于每种情况,定义, 是第i个盒子中球的个数, 是所有盒子中的球的个数的平均数,即n/m。求V的期望E(V)。题解:首先化简公式。又由于,所以首先对于每个盒子,每个球落入其中的概率是p=1/m,落不进的概率为1-p=1-1/m。所以对于每个盒原创 2016-08-10 17:22:31 · 461 阅读 · 0 评论 -
2016 Multi-University Training Contest 6 解题报告
1. 1001-HDU 5793 A Boring Question题意:给定n,m,求的值。其中。题解:二项式定理:特别的,即,其中。所以:用快速幂来求解m^(n+1)由于要取模,但是有除法所以用费马小定理可得:a / c mod p== a * c^(p-2) mod p。代码:#include #i原创 2016-08-06 10:30:10 · 363 阅读 · 0 评论 -
极角排序
bool cmp(const Point& a,const Point& b){ if (a.y*b.y <= 0) { if (a.y > 0 || b.y > 0) return a.y < b.y; if (a.y == 0 && b.y == 0) return a.x < b.x; } return a*b > 0;}原创 2016-08-06 18:42:50 · 216 阅读 · 0 评论 -
除法取模
原文链接:http://blog.csdn.net/xiaogengyi/article/details/8833092做题时,经常要求“答案模一个数”的结果。并且这个数往往是1000000007。如果只有乘法和加法,那么我们对此毫无压力。但是,除法出现时,我们往往需要用高精除法。而费马小定理给我们带来了福音!从此,我们再不用为了区区一个模1000000007而用高精除法了。转载 2016-08-06 10:34:17 · 3282 阅读 · 0 评论 -
HDU 5776 sum(前缀和+取模)
题目链接:HDU 5776题意:给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO。题解:预处理前缀和,一旦有两个数模m的值相同,说明中间一部分连续子列可以组成m的倍数。为什么?假设sum[1,i]%m=k,sum[1,j]%m=k,则sum[i+1,j]%m=0。由鸽巢原理,可以知道一旦n>m,则必定会有某两个前缀和对m取模相等。复杂度O(n).代原创 2016-07-31 09:05:47 · 849 阅读 · 0 评论 -
2016 Multi-University Training Contest 2-1001---HDU 5734 Acperience
题目链接:HDU 5734题意:有一个向量:W=(w1,w2,...,wn)W=(w_1,w_2,...,w_n),求一个数α(α≥0)\alpha(\alpha \ge 0)和一个B=(b1,b2,...,bn)B=(b_1,b_2,...,b_n)向量,使得∥W−αB∥2\left\| W - \alpha B \right\|^2的值最小。 注:∥X∥=x21+⋯+x2n−−−−−−−−−原创 2016-07-22 17:34:28 · 304 阅读 · 0 评论 -
矩阵快速幂的应用(郭姐散步)
题目:http://nucacm.openjudge.cn/practice/00001/http://nucacm.openjudge.cn/practice/00013/(升级版)总时间限制: 10000ms 内存限制: 32768kB描述The first lady of our lab is GuoJie, GuoJie likes wa原创 2016-04-26 11:46:27 · 1041 阅读 · 1 评论 -
POJ 3641 Pseudoprime numbers(快速幂+素数)
题目链接:http://poj.org/problem?id=3641题意:给出a,p,如果p是素数且 ap = a (mod p)即a的p次方对p取模余数为a,输出"yes",否则输出"no".题解:快速幂+判断素数。代码:#include#include#include#includeusing namespace std;typedef long long LL;原创 2016-03-19 18:27:47 · 348 阅读 · 0 评论 -
POJ 3126 Prime Path(素数打表+BFS)
题目链接:http://poj.org/problem?id=3126题意:一个起点数,一个终点数,每次变换只能变换数的其中一位,并且只能是素数,问最少经过几次变换。题解:最短路径BFS,素数预处理打表。注意第一位不能为0.代码:#include#include#include#include#includeusing namespace std;const int M原创 2016-03-19 11:14:50 · 596 阅读 · 0 评论 -
POJ 1930 Dead Fraction(小数化分数)
题目链接:http://poj.org/problem?id=1930题意:给一个小数,循环节未知,要求转换为分数,求出分母最小的分数。题解:无线循环小数转化分数,参见:无限循环小数化分数。枚举循环节。代码:#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f原创 2016-03-18 21:40:10 · 420 阅读 · 0 评论 -
2016 Multi-University Training Contest 3 解题报告
1.1001-HDU 5752 Sqrt Bo题意:给你一个整数n,问你需要经过几次开根号并向下取整的操作,使得值为1,超过5次输出"TAT"。题解:开根号向下正得到1的最大的数为3.9999999……(约等于2^2),开根号向下取整得到4(2^2)的最大的数为15.9999999……(约等于2^4),…………可以得到能在五次之内开根取整得到1的最大值为2^32.先判断边界是否超过2^原创 2016-08-01 20:39:56 · 317 阅读 · 0 评论