数论
文章平均质量分 73
leolin_
这个作者很懒,什么都没留下…
展开
-
hdu GCD 【欧拉函数,素因子分解,筛选法,容斥原理】
一道不错的数论题,可惜自己想不出,只能参考大牛们的代码~~http://acm.hdu.edu.cn/showproblem.php?pid=1695#include#include#include#include#include#include#include#i原创 2011-07-15 00:25:30 · 837 阅读 · 0 评论 -
【容斥原理】HDU 4135
容斥原理的应用,分别找1~a的和1~b的个数,相减就是答案,其中找的时候要用容斥原理求,因为有些会重复计数#define N 1000005int p[N];int cnt;void factor(int n){ int i; int a = 1; for(i=2;i*i<=n;i+=a,a=2){ if(n%i==0){原创 2012-02-28 21:16:33 · 680 阅读 · 0 评论 -
【数学题/化简分数】HDU 4139
简单的数学题,化简分数,做法是分别记录分子和分母的素因子个数,分子的加1,分母的加-1,这样最后个数为0的就代表已经约去,有个小优化,找一个数的素因子的时候用上,快了300ms....Orz,具体看代码#define N 1000005int max(int a,int b){return a>b?a:b;}LL cnt[N];void gao(int n,int p){ int原创 2012-02-28 12:45:16 · 1013 阅读 · 0 评论 -
【组合数取模】
zoj 3557Lucas定理:只适用于p为素数#define N 10005// Lucas定理求解C(n,k)%p, p是素数// C(n,k)%p = C(n%p,k%p)*C(n/p,k/p)%p// C(n,k)%p = n!/(k!*(n-k)!)%p = n!*((k!*(n-k)!)^(p-2))%p// 对于一个质数p,i对p的逆元可以不用扩展欧几里得进行求解/原创 2011-10-31 02:04:02 · 1249 阅读 · 0 评论 -
【Fibonacci 数列前四位&后四位】hdu 3117
这题的前四位是参考别人的思路的,我发现求前几位通常做法是取对数!后四位不用说,当n>=40时,位数>8。另外,后四位的周期是15000,就这样打表求出后四位。至于前四位,就要用到Fibonacci 数列的通项公式,我看了百度百科后才知道这个公式==,另外,有趣的是当n无穷大,前一项与后一项之比逼近黄金分割0.618。。。orz。话说回来,an可以表示为t*10^k(t为>1的浮点数原创 2011-10-22 18:05:53 · 902 阅读 · 0 评论 -
【Java练习7——Catalan数】POJ 2084
做法:先固定一个点例如1,然后分别连1-2,1-3,1-4.......,这样线段两边各有f1和f2种情况,因此有公式f(n)=f(0)*f(n-2) + f(2)*f(n-4) + f(4)*f(n-8) .....+ f(n-2)*f(0),一看,这就是大名鼎鼎的Catala原创 2011-09-22 20:36:17 · 563 阅读 · 0 评论 -
欧拉函数及其部分性质
欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)原创 2011-07-28 20:41:04 · 23005 阅读 · 2 评论 -
poj 2478【线性筛素数+欧拉函数】
由于2设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。进行求解,而现在首要的原创 2011-07-28 22:10:56 · 1071 阅读 · 0 评论 -
普通筛素数及线性筛素数
一般筛法:一般筛法:const int MAXN = 70000;void Prime() // 筛法求素数表p[i]=1为素数,类似于hash映射!{ int i, j; for (i=0; i<MAXN; i++) prime[i] = 1;原创 2011-07-28 20:47:33 · 11271 阅读 · 5 评论 -
hdu 1071 The area
http://acm.hdu.edu.cn/showproblem.php?pid=1071 又是纯数学题,设y=ax^2+bx+c,y=kx+h,利用p1,p2,p3解出:a=(y2-y1)/((x2-x1)*(x2-x1)); b=-2*a*x1; c=y1-a*原创 2011-07-11 12:19:39 · 458 阅读 · 0 评论 -
【欧几里得&扩展欧几里得】
欧几里得LL gcd(LL a,LL b){return (b==0) ? a : gcd(b,a%b);}扩展欧几里得int ex_gcd(int a,int b,int &x,int &y){//返回的是最大公约数 if(b==0){ x = 1; y = 0; return a; } int d原创 2012-01-20 21:24:48 · 491 阅读 · 0 评论