北门的智慧——数论
文章平均质量分 73
真正的学习生涯开始
leader_win
一份温情,一份感动
展开
-
lightoj1236(素因子分解)
题目链接:http://vjudge.net/problem/LightOJ-1236;题目分析:本题是求解,在小于n的数中有多少lcm值是n,其实就是找小于n的数对,其素因子与n相同并且,素因子个数最大值与n相同,所以这两个数的组成,对于n的每一个素因子 ,只需要一个值等于n的素因子个数,另一个随意,设个数为a[i]这样值为2*(a[i]+1)-1,(最大的值只有一对)。本题是重复的不计数,原创 2016-10-28 12:41:42 · 763 阅读 · 0 评论 -
51nod 1038(n次剩余)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1038;题目分析:1、原根:原根的分布比较广,最小原根通常也较小,可以枚举正整数来快速找原根,对于一个代检查的p,对p-1的每一个素因子a,检查,若成立则说明g不是原根。2、离散对数 :给定的x,n,m 求x的解。令s=,则有,即有。将所有的放入有序表原创 2016-10-24 20:28:10 · 1733 阅读 · 1 评论 -
hdu 4609(快速傅里叶变换)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4609;题目大意:给出一些边长,问任取3边组成三角形的概率是多少。分析:只要求出能组成三角形的有多少种再除以C(n,3)就好了。求得方法自然是用两最小边之和大于最长边。求和的部分可以用FFT优化。代码如下:#include #include #include #include #原创 2016-10-09 12:28:27 · 1548 阅读 · 0 评论 -
hdu 1402(FFT+大数乘法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402;题目分析:大数乘法有很多种计算方式,但可以转换成多项式相乘就可以使用FFT进行计算,第一次接触傅里叶变换,具体FFt推荐一篇文章;代码如下:重载*的:#include #include #include #include #include using namespac原创 2016-10-07 14:11:30 · 718 阅读 · 0 评论 -
hdu 4592(高斯消元好题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4592;题目分析: 本题其实就是一个普通的高斯消元题,但是本题数据范围巨大,所以不能用普通的高斯消元来写,只能采用求逆打表法,进行求解。只有满秩矩阵才能有逆元,通过消元可以看出,只有4,5时时多解的,所以其他就打表好了,但不能打0,1矩阵,还是会超时,最后打出的是十进制数就好办了。代码如下:原创 2016-09-11 19:28:03 · 1174 阅读 · 0 评论 -
poj1681(高斯消元)
题目链接:http://poj.org/problem?id=1681题目分析:本题是有的存在自由变元的高斯消元,而且存在无解的情况,还是有一定难度的;代码如下:#include #include #include #include #include #include #include #include #include #include #include #in原创 2016-09-03 13:41:17 · 1399 阅读 · 0 评论 -
poj 1222(高斯消元)
题目链接:http://poj.org/problem?id=1222题目大意:开关经典问题,主要是高斯消元模板题,没有自由变元的高斯消元;题目分析:本题可以采用搜索来写,但很慢,所以使用高斯消元。高斯消元主要是消元后回带,由于本题没有自由变元,所以直接回带就好了。代码如下:#include #include #include #include #include #原创 2016-09-03 13:37:36 · 660 阅读 · 0 评论 -
hdu 5768(中国剩余定理+容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5768;题目分析:因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题。当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的数的个数,可以看成若干个同余方程联立成的一次同余方程组。然后我们就可以很自然而然的想到原创 2016-07-30 15:31:01 · 853 阅读 · 0 评论 -
矩阵快速幂模板
const int mod=2015;int N,M;struct Matrix{ int M[55][55]; Matrix(){memset(M,0,sizeof(M));}}U,P;Matrix Add(const Matrix &a,const Matrix &b){ Matrix ret; for(int i=1;i<=N;i++) for(int j=1;j<=N;原创 2016-07-12 17:37:36 · 1572 阅读 · 0 评论 -
hdu 5399(数学推理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5399;题意:给你m个函数f1,f2,⋯,fm:{1,2,⋯,n}→{1,2,⋯,n}(即所有的x∈{1,2,⋯,n},对应的f(x)∈{1,2,⋯,n}),已知其中一部分函数的函数值,问你有多少种不同的组合使得所有的i(1≤i≤n),满足f1(f2(⋯fm(i)))=i对于函数集f1,f2原创 2016-07-11 20:50:53 · 1238 阅读 · 0 评论 -
hdu 5137(简单数学题)
题目链接:点击打开链接;题意:f(x)是求f的素因子个数 然后给定区间l,r,求l~r之间gcd(f(i),f(j))的最大值分析:打表,然后就o(1)了;代码如下:#include #include #include #include #include using namespace std;struct sa{ int k;}p[1000005];boo原创 2016-07-05 20:14:56 · 1862 阅读 · 0 评论 -
hdu 3589(二次剩余+雅可比符号)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3589;题意:就是一个裸的雅可比符号:代码如下:#include #include #include #include using namespace std;int a[10];int fac[100500],sum[100500];int cnt;原创 2016-06-30 19:18:50 · 2369 阅读 · 0 评论 -
hdu 3509(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3509;题意:按照所给的最后一个公式推导,然后矩阵快速幂把图中的矩阵最上面的0改成1,最后的f(n-2)转换为f(n-1)然后就矩阵快速幂就行了#include #include #include #include #include #include #include原创 2016-06-19 19:38:55 · 804 阅读 · 0 评论 -
51nod 1126(矩阵快速幂)
题目链接:点击打开链接题意:有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给出A,B和N,求f(n)的值。分析:递推式,和简单的库镇快速幂:代码如下:#include #include #include #include #include #include #in原创 2016-04-29 18:58:47 · 4896 阅读 · 1 评论 -
51nod 1031(快速幂)
题目链接:点击打开链接;题意:求:3^0 + 3^1 +...+ 3^(N) mod 1000000007;分析:快速幂,没啥说的代码如下:#include #include #include #include #include #include #include #include #include #include using namespace std;c原创 2016-04-29 18:55:01 · 4225 阅读 · 0 评论 -
poj1305(毕达哥拉斯)
题目链接:http://poj.org/problem?id=1305;题目大意:给一个正整数n求解,求解n的范围内gcd值为1的勾股数和不是勾股数的个数。题目分析:根据毕达哥拉斯定理,gcd值为1的勾股数就是本源毕达哥拉斯三元组,有公式如下:x=j*j-i*i;y=2*i*j;z=i*i+j*j;其中i和j其中一个为奇数,另一个为偶数,且j>i;本题数量小,直接暴力枚原创 2016-04-02 15:50:53 · 1518 阅读 · 0 评论 -
poj 1995(快速幂)
题意:本题给出h组数每组两个数,ai,bi,求解 ;分析:没啥好说的,一个裸的快速幂:Source Code#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-03-25 19:36:55 · 968 阅读 · 0 评论 -
RGCDQ(线段树+数论)
题意:求n和m之间的所有数的素因子个数的最大gcd值。分析:这题好恶心,看着就是一颗线段树,但本题有一定的规律,我也是后来才发现,我还没推出这个规律,就不说了,就用纯线段树解答吧。因为个点数都小于1000000所以素因子个数不会超过7个所以建一个线段树,最下面一层是每个节点的素因子个数为1,2,3,4,5,6,7的有多少个,父节点求和,最终查询的是n到m之间有多少个1,2,3,4,5,6,7然原创 2016-03-23 14:48:33 · 863 阅读 · 0 评论 -
Sum(快速幂+大整数计算)
题意:给出一个函数s,该函数值为对于n的s(k)为数列的个数,该数列满足x1,x2……xk为正整数且x1+x2+……+xk=n;求解s(1)+s(2)+……+s(n);分析:本题最坑的地方在于(1,2)与(2,1)算两种,搞明白这个就可以分析l对于2来说就是 1 3 : 1,14 :1,2,15 :1,4,2,1以此类推可知 其和为2^(n-1);但是n的个数特别原创 2016-03-23 14:36:24 · 1417 阅读 · 0 评论 -
hdu2588 GCD(欧拉函数)
题意:求解小于n的数i且gcd(i,n)大于m的i的个数分析:对于所有小于n的最大公约数值一定是n的因子,所以,从这个方面下手找i为n的因子且i>m时求解车i的素数倍数且小于n的个数累加起来就好了。以为这个倍数最大为n/i所以求得n/i的欧拉函数值累加起来就好了。代码如下:#include #include #include #include #include #incl原创 2016-03-21 21:09:14 · 1832 阅读 · 0 评论 -
Farey Sequence(欧拉函数)
题意:给出式子F F中分子分母互质,且分子小于分母例:F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} 求解 fn的元素个数、分析:本题就是求解欧拉函数值的前n项和,直接求解欧拉函数值的方法不行原创 2016-03-21 20:35:14 · 1980 阅读 · 0 评论 -
Happy 2004(一元线性同余方程组)
题意:本题求解2004的n次方的因子和对29取模的值是多少;分析:根据基本算数定理,2004为 2^2*3*167,那么2004^n即为 2^(2*n)*3^n*167^n;那么其因子和为(2^(2*n+1)*3^(n+1)*167^(n+1))/2*166;因为是求解模29的值所以要用逆元 2对于29的逆元为15,而166对于29的逆元为18。此外,本题要采用快速幂的方式求解;代码如原创 2016-03-21 20:00:57 · 976 阅读 · 0 评论 -
Line(扩展欧几里得)
题意:本题给出一个直线,判断是否有整数点在这条直线上;分析:本题最重要的是在给出的直线是不是平行于坐标轴,即A是不是为0或B是不是为0.。此外,本题还有一点就是C输入之后要取其相反数,才能进行扩展欧几里得求解关于扩展欧几里得详见:http://blog.csdn.net/qq_27599517/article/details/50888092;代码如下:#include #inc原创 2016-03-21 19:50:11 · 847 阅读 · 0 评论 -
Biorhythms(一元线性同余方程组)
题意:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第原创 2016-03-21 19:42:32 · 536 阅读 · 0 评论 -
- Pairs Forming LCM(算数基本定理)
题意:求解小于n的数a,b求有多少对a,b满足lcm(a,b)==n;分析:由算数基本定理(素数筛)原创 2016-03-17 10:37:41 · 1736 阅读 · 0 评论 -
UVa11827(欧几里得算法)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=109329#problem/F;关于欧几里得和扩展欧几里得算法请参阅:http://blog.csdn.net/qq_27599517/article/details/50888092;题意:题目很简单,给出一组数求两两之间最大的最大公约数;分析:这道题恶心在不给有多原创 2016-03-16 13:02:10 · 1388 阅读 · 1 评论 -
sgu 106(扩展欧几里得)
题意:给出一个式子 ax+by+c=0,求x在z1~x2内y在y1~y2内有几组数据;分析:本题a,b,c均有可能为0,所以要先看a,b,c有为0时的情况,此外,还要判断x1是否小于x2,y1是否小于y2。剩下的就是用扩展欧几里得来计算是否有解,有几个解。代码:#include #include #include #include #include #include #incl原创 2016-03-15 20:12:20 · 1446 阅读 · 0 评论 -
数论系列之一元线性同余方程(组)
数论,在ACM道路上走的越来越远,提起数论,都是从整除开始,而一元线性同余方程(组)的解,也要从整除起源。提起整除问题,最负盛名的是欧几里得算法和扩展欧几里得算法,在这里我就不再赘述,详情请见我的博客:而一元线性同余方程(组)的问题的解法源于扩展欧几里得算法。、对于一元线性同余方程ax≡b(mod c)来说,这个方程等价于ax=by+c,由于y是未知数,所以可以领y=-有,即有原创 2016-03-14 19:05:29 · 3893 阅读 · 0 评论 -
数论系列之欧几里得
欧几里得这部分分为欧几里得算法和扩展欧几里得算法。07原创 2016-03-14 18:54:07 · 2522 阅读 · 0 评论 -
hdu1573X问题 同余
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1573;本题是杭电为数不多的中文题之一,所以意思很明朗;分析:题目给的很清楚,就是求一次同余方程,我还是使用比较擅长的扩展欧几里得算法解答的代码:#include #include #include #include #include #include #include #in原创 2016-03-13 18:50:18 · 595 阅读 · 0 评论 -
hdu 3579 Hello Kiki 同余
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3579题意:Kiki有x个硬币,用了m种方法分,每次记录基数和剩余量,他爸爸呢,想要知道他的小金库有多少钱,但不会算,让你算一下;分析:很显然是一次同余方程组求解,但有一点,没有0解;具体代码如下:#include #include #include #include #incl原创 2016-03-13 19:15:46 · 543 阅读 · 0 评论 -
poj 3233(矩阵快速幂)
题目链接:http://poj.org/problem?id=3233;题意:给出一个公式求这个式子模m的解;分析:本题就是给的矩阵,所以很显然是矩阵快速幂,但有一点,本题k的值非常大,所以要用二分求和来减少运行时间。代码:#include #include #include #include #include #include #include #include #i原创 2016-03-14 16:12:48 · 917 阅读 · 0 评论 -
51nod1106 质数检测
1106质数检测基准时间限制:1 秒 空间限制:131072 KB 分值: 0#include #include using namespace std;int change(int n){ if(n==2)return 1; if(n==1)return 0; for(int i=2; i*i<=n; i++) if原创 2015-07-09 16:25:11 · 708 阅读 · 0 评论 -
acdream1084 寒假安排
Problem Description寒假又快要到了,不过对于lzx来说,头疼的事又来了,因为众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行。假设lzx的后宫团有n个人,寒假共有m天,而每天只能跟一位后宫MM约会,并且由于后宫数量太过庞大了,而寒假的天数太少,所以lzx在寒假里不会与一个MM约会一次以上。现在lzx想要知道:寒假安排的方案数如果写成k进制,末位会有多原创 2015-08-05 10:02:46 · 645 阅读 · 0 评论 -
hdu 1021Fibonacci Again
题目:点击打开链接;题意:给出一个斐波那契的定义,求解任意一个数能否被3整除;分析:本题是求解该数列的值能否被3整除而不是求解数列中得值所以在采用同余的方式解决问题;(不想用数组写只好用这种迭代关系写)#include #include #include #include #include #include #include #include #include #原创 2016-03-09 13:07:43 · 399 阅读 · 0 评论 -
hdu 2035人见人爱A^B
题目:点击打开链接;题目分析:本题是求解a^b的后三位数,即求解a^b mod 1000的值,由于b的数字特别大,所以采用快速幂的形式求解#include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2016-03-09 13:12:16 · 491 阅读 · 0 评论 -
poj 2689Prime Distance
题目链接:点击打开链接;题意:在l和u之间找到相邻的素数差最大和最小的打印出来。没有输出There are no adjacent primes.分析:本题数据很大,所以int不能存下,所以用long long,此外,正常的素数筛法不能筛出这么的素数。然而我观察到l和u之间距离为1000000,所以只需要筛出l和u之间的素数就好了,并且,在小于2147483647的所有的数为素数和sqrt原创 2016-03-09 20:00:19 · 577 阅读 · 0 评论 -
poj 2891Strange Way to Express Integers
题目链接:点击打开链接;题意:给出n个(a,r)组合问是否有值m可以使所有m mod a=r;分析:本题重点在于对于这些对数进行分析,m%a1=r1;m%a2=r2;即m=a1*x+r1,m=a2*y+r2;所以a1*x+a2*y=r2-r1;通过扩展欧几里得算法即可解出x的值,以此类推,解得一次同余方程组的解。本题的几大点在于对于无解的数据,要及时的退出,不要进行无用的计算,其次,总要保原创 2016-03-10 17:10:22 · 683 阅读 · 2 评论 -
poj 2115C Looooops
题目:http://poj.org/problem?id=2115;题意:给出A,B,C经过多少次循环能结束,不能则输出FOREVER,且本题所有数值在2^k内;分析:不难看出本题意图为求解A+c*x=b(mod 2^k)(由于三个横线不好打就用等号代替),显然是求解一次同余方程的最小值,采用扩展欧几里得算法解答;代码:#include #include #include #原创 2016-03-11 20:50:56 · 464 阅读 · 0 评论