数论
baolaoban
我现在什么都没有只有一颗坚决执着的心一颗敢于挑战狂风暴雨的永恒的心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 4549 M斐波那契数列
用到了点数论,然后矩阵优化由递推式F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 )容易得到通项公式F[n]=F[1]^f[n]*F[0]^f[n-1]其中f[n]是普通的斐波那契,f[0]=0f[1]=1f[n]=f[n-1]+f[n-2](n>1)到了这里我用到了数论的一个性质,当gcd(x,m)=1时,x^原创 2013-05-18 20:49:08 · 1115 阅读 · 0 评论 -
hdu 2965 Business Cards
这题忘了开long long了,以后数论题尽量都开long long吧。。。三种情况1、全部横着放 2、全部竖放 3、横竖交叉放,其中一条边要是a,b最小公倍数的倍数,另外一边直接解模线性方程#includetypedef long long LL;LL getgcd(LL a,LL b){ if(!b)return a原创 2013-06-12 20:11:43 · 1026 阅读 · 0 评论 -
hdu 3802 Ipad,IPhone
做完这题后感觉矩阵超级好用。用了两次矩阵,一次是在求斐波那契数列时,还有就是求后面的根号式。前面的两个式子直接二分幂就行。对于后面的式子,首先F[n]可以用快速幂求解,同时利用费马小定理,每次计算都对(p-1)取余,这些都不是问题。接下来是关键,首先引用下大神的图所以我们其实只要求2Xn。建个矩阵array[2][2]={a+b,2,原创 2013-07-08 14:38:43 · 1251 阅读 · 1 评论 -
hdu 2815 Mod Tree (数论题)(baby step giant step 小步大步)
这题的解法是参考福州大学的数论大神 AekdyCoin 的。用消元法,并附上ac大神的证明【扩展Baby Step Giant Step解决离散对数问题】原创帖!转载请注明作者 AekdyCoin !【普通Baby Step Giant Step】【问题模型】求解A^x = B (mod C) 中 0 【思路】我们可以做一个等价原创 2013-07-10 14:44:08 · 1163 阅读 · 0 评论 -
2588 GCD (数论题)
做完这道题之后,自我感觉收获还是挺大的。第一次ac的时候,用了31ms,基本思路是这样:从2到sqrt(n+0.5)暴力枚举n的所有因子,然后对所有的因子d,求出对应的(n/d)的欧拉函数值oula(n/d),即比(n/d)小且与(n/d)互质的正整数的个数,最后把他们加起来就是答案了。但是看到那些排在前面的大牛都是0ms过的,所以这题还有更好的方法。在网上搜了很多题解原创 2013-07-10 22:31:44 · 901 阅读 · 0 评论 -
hdu3589 Jacobi symbol(二次剩余 数论题)
本题的注意点:n=p1*p2*p3......Pm解法:直接利用公式a^((p-1)/2)=(a/p)mod p 即可求解。#include#includeint flag[1005],p[500],a;int d[100];int init(int s){ int len=0,tmp,h=sqrt(s+0.5); for(int i=0;p[i]<=h;i++) i原创 2013-07-12 12:31:23 · 1043 阅读 · 0 评论 -
HDU 3571 N-dimensional Sphere(高斯消元 数论题)
这道题算是比较综合的了,要用到扩展欧几里得,乘法二分,高斯消元。看了题解才做出来orz基本思路是这样,建一个n*(n-1)的行列式,然后高斯消元。关键就是在建行列式时会暴long long,所以要用取模来计算,即公式ax=b,等价于ax=b(mod p)因为答案范围不超过正负10^17次,p可以取(2*10^17+3)。然后加减乘除都能够进行了,乘法用乘法二分来做,除法用模线性原创 2013-07-13 14:07:44 · 1352 阅读 · 0 评论 -
hdu3579 Hello Kiki(数论)
用到中国剩余定理,然后用扩展欧几里得算法求解。这里有两个注意点,1、硬币数量不能为0或者负数 2、每个group数量有可能大于50,样例中就有#include#include#includeint M[10],A[10],n;int extEuclid(int p,int q,int &x,int &y)//扩原创 2013-07-03 22:32:06 · 1398 阅读 · 0 评论 -
1104 Remainder(数论+bfs)
做完这道题,对取余的理解又进一步深刻了。这道题直接bfs就行,关键是取余操作。 #include #include #include #include #define LL long long using namespace std; LL ans,k; bool vis[2010005]; char route[100000]; struct node {原创 2013-07-22 20:59:35 · 778 阅读 · 0 评论
分享