
数论
韦我独尊-德天独厚
这个作者很懒,什么都没留下…
展开
-
UVA11317 Problem C GCD + LCM 欧拉函数应用+求位数
求 G,L在 10^100进制下的位数,位数好求,可以用log来解决,比如n在十进制下 (int)log10(n) + 1,只要换底就可以了,主要是求 G和L的值,L的值依据G的值很好得到,所以主要就是求G的值,这个思想过程跟UVA11426的解析过程很像:http://blog.youkuaiyun.com/u010682557/article/details/16331811只不过UVA114原创 2013-11-24 22:14:20 · 973 阅读 · 0 评论 -
Uva10090 Marbles 扩展欧几里德的应用
好几天没有做题目了,因为心情不好导致刷题没动力,现在感觉还可以,继续数论的路,为了回顾一下扩展欧几里德所以做了一下这个题目, 根据题目意思 很容易找到方程 n1*x0+n2*y0=n,求解,我们都知道扩展欧几里德求出的x0,y0事实上是有通解的,x0*n1+y0*n2=gcd(n1,n2)的通解,x = x0 + n2/Gcd(n1, n2) * ty = y0 - n1/原创 2013-12-08 19:18:25 · 1034 阅读 · 0 评论 -
POJ3641 Pseudoprime numbers 素数测试的应用
算是一道简单题目,看懂题目的疑似就可以了,题目先介绍了费马定理 a^p=a(mod p),接下来又介绍了关于以 a 为基的伪素数的定义,意思就是 让你判断 a^p %p == a?这个是否成立,通过费马定理可以轻易知道,如果p是一个素数的话 那么肯定是no,所以 对于剩下的部分直接 用快速幂来判断就可以了,本以为会超时的,后来过了,题目的复杂度卡的比较好#include#inclu原创 2013-12-10 15:38:59 · 914 阅读 · 0 评论 -
POJ3696 The Luckiest number 非常好的数论题目
10^x-1是长度为x的由9组成的,所以 8/9*(10^x-1)= L*P,就能改为由8组成的, 化简 (10^x-1)=9*L*P/8; 令 m=9*L/gcd(8,L),使得9*L*P/8=m*P1,继续化简 (10^x-1)=m*P1, 接下来转化为同余方程 10^x ≡1 (mod m),这个式子刚好符合欧拉函数一个 性质的式子 , a^φ(n) ≡ 1 mod n ,所以原创 2013-12-16 20:46:44 · 1373 阅读 · 0 评论 -
poj3090 Visible Lattice Points 欧拉函数的应用
从点(0,0)到点(x,y)画线段不经过其它点,意思就是x,y互素,由此把问题转化为求1到n内互素的数的对数,当然不要漏了(1,1)(1,0)(0,1)这三个点,接下来就是求1到n的欧拉函数值来解决这个问题,因为n的范围不是很大,所以可以直接用欧拉函数的递推方法进行求解,再打表预处理前n项即可#include#include#include#include#include#i原创 2013-12-16 16:16:19 · 888 阅读 · 0 评论 -
poj3358 Period of an Infinite Binary Expansion 数论有难度
这道题目感觉好难,根本就是无从下手的感觉,尝试了以前的所有方法,都没有思路,毫无进展,参考了一下别人的思路,感觉学到了新的知识接下来开始分析观察1/10这组数据,按照二进制转化法可以得到: 1/10 2/10 4/108/10 16/1032/10.……对于每一个分子进行模10处理 可以相应的得到: 1/102/10 4/108/10 6/102/原创 2013-12-18 22:18:49 · 981 阅读 · 0 评论 -
POJ2356 Find a multiple 抽屉原理(鸽巢原理)
题意:给你N个数,从中取出任意个数的数 使得他们的和 是 N的倍数;在鸽巢原理的介绍里面,有例题介绍:设a1,a2,a3,……am是正整数的序列,试证明至少存在正数k和l,1构造一个序列s1=a1,s2=a1+a2,……,sm=a1+a2+……+am,那么会产生两种可能:1:若有一个sn是m的倍数,那么定理成立:2:假设上述的序列中没有任何一个元素是m的倍数,令rh ≡ s原创 2014-01-05 22:53:45 · 1209 阅读 · 0 评论 -
POJ2992 Divisors 因子和因子个数的应用
由于k与n很大,求组合数 肯定不可能,所以要先求约数有多少个,直接进行素因子分解,因为组合数其实 是有公式 的 可以写成阶乘的形式,因此先对阶乘进行素因子分解1.看看题目的数据范围,大概筛选500以内的素数就可以了2.然后对每隔阶乘进行素因子分解3.求出组合输的素因子分解而后便可得到约数的个数;#include#include#include#include#inc原创 2013-12-23 21:52:29 · 900 阅读 · 0 评论 -
UVA10791 Minimum Sum LCM 数论素因子
题目意思是给你一个数N,并且限定N是两个数 a,b,的最小公倍数,求使得 a+b 最小,并求出 a+b分析:当N为素数时,那么 a+b 最小肯定就是 N+1了,因为素数除了1和本身外 无其它因子了还有就是题目给的N的范围是 N接下来就是一般情况下的了,设pi为素数序列,那么任何一个数 N都可以写成 N=(p1^m1)*(p2^m2)*(p3^m3)……,那么本题最小和其实就是p1+p原创 2013-12-25 20:47:08 · 971 阅读 · 0 评论 -
HDU2837 Calculation 指数循环节 欧拉函数+快速幂
快期末了要复习,但是做数论需要时间来累积,所以保持每天做做题目依旧是这个公式的应用,关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9对于求指数循环节基本都会用到这个公式,或者求 一个 A^B (B非常非原创 2013-12-10 13:22:33 · 1526 阅读 · 0 评论 -
HDU2824 The Euler function 欧拉函数的应用
题目意思就是求 a 到 b 的欧拉函数值的和 ,注意本题的范围 是 3000000,所以不要用线性的 欧拉函数模版,因为那个模版要开三个数组,所以内存会很大,直接用普通的就可以了,坑了我好久的爆内存,还有 请我自己记住啊 __int64#include#include#include#include#include#include#include#inclu原创 2013-11-14 21:06:36 · 1154 阅读 · 0 评论 -
HDU4767 Bell 中国剩余定理 贝尔数 第二类斯特灵数
这道题要是出在现场赛 估计做出的人要少很多很多,要查阅很多资料才做的出来,至少对于我这个菜狗来说 必须要查资料http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E7%81%B5%E6%95%B0首先要了解第二类斯特灵数,还有贝尔数,接下来是解题的关键:若p为任意质数,则有Bell(n+p) = Bell(n) + Bel原创 2013-11-11 16:18:29 · 1115 阅读 · 0 评论 -
poj1091 跳蚤 解不定方程的应用
这题目真变态,真恶心,确实是跟解不定方程有关系,可是那根本就不是重点,还是看了别人的思路才知道要用到那么多知识点,真是个 变态的好题目,做一道题 要了解很多1、最大公约数原理设d = gcd(A1, A2, ..., An),则必然可以找到或正或负的整数Xi, 使A1X1 + A2X2 + ... + AnXn = d.2、A1X1 + A2X2 + ... + A原创 2013-11-11 22:07:58 · 1243 阅读 · 0 评论 -
LA3516 Exploring Pyramids 递推关系
题意是给你一个多叉树,从根节点开始,每次尽量往左走,走不通了 就回头,然后往右走,把遇到的字母记下来(字母只有两种A,B,相邻两个节点肯定字母不同),可以得到一个序列,现在给你这个序列,让你求出有多少种树与之对应,白书里有的,直接贴个代码给自己以后回顾设输入序列为s,d(i,j)为子序列si,si+1,...sj对应的数的个数,边界条件为 d(i,i)=1,且si不等于 sj时,d原创 2013-11-12 23:36:05 · 917 阅读 · 0 评论 -
UVA11137 Ingenuous Cubrency 完全背包 递推式子
做数论都做傻了,这道题目 有推荐,当时的分类放在了递推里面,然后我就不停的去推啊推啊,后来推出来了,可是小一点的数 输出答案都没问题,大一点的数 输出答案就是错的,实在是不知道为什么,后来又不停的看,突然有股傻眼的感觉,这个貌似很面善很面熟啊,不禁想起以前一到背包题目,也是给了具体数字 最大范围,最后使用背包来解决的,那么这道有些相似,后来翻了 背包九讲的PDF,我了个去,这不就是 完全背包么?原创 2013-11-13 23:05:06 · 1163 阅读 · 0 评论 -
UVA12619 Just Make A Wish 很好的数论题目
很开心,因为这道题弄懂了乘法逆元,以前看到乘法逆元的时候认为很难,相等个时间好好看看书后再做题,结果大神告诉说乘法逆元是很重要的基础,所以就学了,而这道题目真的很给力!!!题意是有t个案例,每个案例第一行一个数字n,表示步骤,每一步有一个整数,正的表示乘上这个数,负的表示除以这个数,初值为1,为每一步乘除得到的数,表示一个矩形的面积,问有几种不同的矩形,求所有步骤的矩形总数 举个例原创 2013-11-27 21:18:27 · 876 阅读 · 0 评论 -
poj2407 Relatives 欧拉函数基本应用
题意很简单 就是欧拉函数的定义:欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。题目求的就是φ(n)根据 通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数然后利用以下性质变形:欧拉函数是积性函数——若m原创 2013-11-14 16:37:31 · 1099 阅读 · 0 评论 -
poj2478 Farey Sequence 欧拉函数的应用
仔细看看题目,按照题目要求 其实就是 求 小于等于n的 每一个数的 欧拉函数值 的总和,为什么呢,因为要构成 a/b 然后不能约分 所以 gcd(a,b)==1,所以 分母 b的 欧拉函数值 就是 以b为分母的 这样的数有几个,分母b的范围 是小于等于n,所以 直接套一个模版就可以了 ,网上找的 说筛选的比较好,下面代码中有一个 注释掉的 模版 貌似 是错的,还不清楚为什么 弄清楚了原创 2013-11-14 19:48:06 · 1069 阅读 · 0 评论 -
哈哈 拿到了 欧拉函数线性模版
问大神要了个模版 线性的 ,先保留一下 然后慢慢研究 为什么是线性的#include #include #include using namespace std;const int maxp = 100000 + 5;int pri[maxp], phi[maxp], pnum;bool vis[maxp];void phi_table(int n) {原创 2013-11-14 20:14:29 · 1084 阅读 · 0 评论 -
POJ1845 Sumdiv 费马小定理+欧拉函数+素因子分解
题目有点难,过题率只有百分之二十,今天做了一个下午,做不出停了一下,在做别的题目以后,回来速度A了,原来费马小定理那里写错了,9900写成了9901,有点粗心,题目意思是求A,B,,求出A^B的所有约数之和S,然后输出S%9901;开始分析:对A进行素因子分解,pi为素数序列,A=p1^m1*p2^m2……pn^mn,那么 A^B=p1^(m1*B)*p2^(m2*B)……pn^(mn原创 2013-12-25 23:56:48 · 1192 阅读 · 0 评论 -
UVA557 Burger 数论 递推组合
在HUST做一个数论专场,看到这道题目过的人代码很短,就来水一下,一开始被鸟语坑了,题意是一共N个人(N肯定为偶数),Ben 和 Bill 排在最后,有N/2个汉堡和 N/2个奶酪,轮到每个人时扔硬币,扔到一面对应汉堡另一面对应奶酪,其中汉堡或者奶酪分所有人得到食物前 已经被拿完了,就不再需要扔硬币了,问Ben 和 Bill 拿到相同食物的概率;因为Ben 和 Bill 排在最后原创 2013-12-25 23:28:53 · 1082 阅读 · 0 评论 -
UVA10375 Choose and divide 组合数
题意很简单,求两个组合数相除,数字有点大,想要直接求是不可能的,只能想办法化简或者其它办法,基础可能打的不是很结实,一开始想不出,有点想要把除法变成乘法,然后约分,这样不太现实,万一p,q很大,r,s很小还是有可能超的,感觉这道题目比较好的,思路有点活,最后想出来还是觉得题目比较奇妙的,题目给的 m!C(m,n) = -------------原创 2013-12-26 23:31:45 · 879 阅读 · 0 评论 -
HDU2879 HeHe 数论积性函数
题目名字有点搓,做题时没做出来,学长他们做出了,发现跟网上题解的思路没太大区别,网上所有题解的分析也都转自同一个地方,看样子这道题目不是那么好想的,没办法按照解析画了半天,计算器按了半天,理解了,自己敲出来了,觉得值得留念,打算再刷几道这样的hdu 2879 HeHe题意:In the equation X^2≡X(mod N) where x∈[0,N-1], we原创 2014-05-12 19:45:20 · 1102 阅读 · 0 评论 -
Ural 1903 Unidentified Ships 组合数 + 乘法逆元
一开始题意没读懂,英语是硬伤,其实是这道题目真的有点饶人,后来补题,看懂了意思,从n个数中挑出t个,然后第k个必须要在,挑出的t个数要排序成不下降的顺序,然后 原本那个第k个数在这个跳出的t个数当中要在第x的位置分析:直接找出比第k个数小的数的个数,还有比第k个数大的数的个数,当然啦还有可能存在与第k个数相等的数的个数,唉呀,一开始漏了相等的情况,没看题目案例,真是作死啊,后来全弄好了原创 2014-07-19 15:06:21 · 923 阅读 · 0 评论 -
HDU4497 GCD and LCM 数论 素数分解
题意很简单首先以前做最简单的LCM跟CGD的时候都知道先求出两个数A,B的最大公约数GCD,那么LCM可以利用 A*B/GCD来求得,这点一开始脑残了没想到,结果没有进行特盘所以错了,意思就是 题目给的L%G不为0的话就是无解,结果我给判其它的去了,肯定漏了些什么没有发现然后对于 L/G进行素因子分解,同时任意的数都能够通过素因子分解来表示,所以三个解x,y,z也能分解L/G =原创 2014-06-30 16:02:06 · 788 阅读 · 0 评论 -
UVA12716 GCD XOR 数论数学构造
题目给你一个N,让你求 两个数字 A,B,且 A>=BN的范围是 3*10^7大的吓人一开始没敢想构造,因为就算构造开的数组也太大了,已经10^7了,后来想了半天在^运算这里也没有想出来什么,所以没办法还是大胆构造吧,构造就去按照他题目的意思来了,构造两个数字 i,j其中j是i的倍数,那么j + i与i的最大公约数肯定是i了,那么(j+i)^i == i这样构造出来的就算满足了,然原创 2014-07-01 19:40:22 · 2139 阅读 · 0 评论 -
HDU4596 Yet another end of the world 扩展欧几里德性质
这题坑了,我真该吃翔啊,居然一开始方程设错了而且没有去想连列的问题,我真是坑货,做不出就该重新理一下嘛,操蛋,题意:给了N组x,y,z然后 问你是否存在两个或者两个以上的id,是的 id%x的值在区间[y,z]之间,若有则输出Cannot Take off否则你懂得根据题意 那么 列出 :a*x1 + y1 b * x2 + y2 假设有解的话,那么这两个区原创 2014-07-07 21:54:06 · 783 阅读 · 0 评论 -
CodeForces 449C Jzzhu and Apples 数学+素数
这道题目晚上本来就花了很多把都××了,着实觉得自己思路没错啊,回顾一下思路,给你n个数,分成两两组合一对,分成最多组如何分,但是组合的两个数 不能互素,所以呢 偶数肯定是好的了,所以先放着,先把素数给搞定,10^5所以枚举所有包含该素数因子的数,如果刚好分组则最好,不然的话其中有偶数的踢掉一个给下面的偶数处理部分,最后再处理偶数的部分,这样肯定满足组数最多,完全没有问题,后来方法确实是没问题啊,只原创 2014-07-20 21:31:34 · 945 阅读 · 0 评论 -
Codeforces Round #226 (Div. 2) C 数论
题目:CF机子真心强大啊,这样才跑了600ms,给了你n个数的序列,然后m次询问,每次询问求出序列中每个数是 区间[a,b]内的 几个素数的倍数统计一下,然后对于个数求和,看了题目下面的hint很易懂,然后看到a,b的范围有些大哈,2*10^9,不知道怎么处理,但是后来发现,序列中的数 最大为10^7,所以就算a,b,再大也无所谓的,大于序列中的最大数的部分的素数,序列中不会有任何数 是它倍数原创 2014-11-17 22:45:37 · 791 阅读 · 0 评论 -
CodeForces 396A 数论 组合数学
好久没做数论的东西了,一个获取素数的预处理跟素因子分解写错了,哭瞎了,呵呵,首先ai最大值为10^9,n为500,最坏的情况 m最大值为500个10^9相乘,肯定不能获取m了,首选每一个ai肯定是m的一个因子,然后能分解就把ai给分解素因子,这样全部的ai都分解了 就能得到m的 所有素因子 以及 所有素因子的个数,题目求的 是n个因子的 不同序列的个数,所以每次 只能选出n个因子,这n个因子原创 2014-11-06 22:08:36 · 999 阅读 · 0 评论 -
POJ2480 Longge's problem 欧拉函数的应用 && 积性函数
题意很简单,求sum(gcd(i,n)) 1这题看到后第一反应并没有里用积性函数的性质,不过也可以做,欣慰的是我反应还是比较快的设f(n)=gcd(1,n)+gcd(2,n)+....+gcd(n-1,n) + gcd(n,n),用g(n,i)表示满足 gcd(x,n)=i的 x的个数 (x小于n),则 f(n)=sum{i*g(n,i)};同时又利用 扩展欧几里德的性原创 2014-05-12 22:32:27 · 1130 阅读 · 0 评论 -
ZOJ3707 Calculate Prime S 数论好题目啊
这道题目真的很难啊,不是那么好做的,现场比赛若是遇到这个 真心很难去花时间研究,我做了好久 WA了 10多把终于过了总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/有一个集合{1,2,3,,,n}, Sn表示 他的特殊子集数(子集中元素不允许出现连续的现象),比如 {1,2}这个就是非法的,Sn与前面所有的Si都互素原创 2014-03-21 21:15:29 · 1185 阅读 · 0 评论 -
HDU1695 GCD 数论之 莫比乌斯反演
做了一段时间的DP,继续回头啃数论了,这是一道莫比乌斯反演的题目,比较繁琐给你a,b,c,d,k五个数,其中a=c=1固定的,让你从[a,b]中找出x,[c,d]中找出y,是的gcd(x,y) == k,注意gcd(x,y) 与gcd(y,x)归为同一种,问一共能找到多少组x,y;分析:因为gcd(x,y) = k,充要条件gcd(x/k,y/k) = 1,所以区间可以原创 2014-02-28 21:50:36 · 1292 阅读 · 0 评论 -
POJ1305 UVA106 Fermat vs. Pythagoras 毕达哥斯拉三元组 特殊的不定方程
特殊不定方程的应用,跟普通的不定方程一样,还是要依靠扩展欧几里德来解决,,可能方程有点偏,题意,给一个正数N,求小于等于正数N的树中,本原的毕达哥斯拉三元组的个数 和 毕达哥斯拉三元组不涉及N以内的数的个数解析前小广告!总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/解析:本原毕达哥斯拉三元组 :x =原创 2014-03-17 20:28:52 · 1269 阅读 · 0 评论 -
POJ1320 Street Numbers 佩尔方程 特殊的不定方程的应用
题意:求两个不相等的正整数n,m(n解析前小广告!总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/解析:使得1+2+……+n = (n+1) + ……+m,那么 n(n+1)/2 = (m-n)(m+n+1)/2,化简 (2m+1)^2 - 8*n^2 = 1,令x = 2*m+1,y=n,那么方程可以转化为原创 2014-03-19 15:22:49 · 973 阅读 · 0 评论 -
FZU1669 Right-angled Triangle 本原毕达哥斯拉三元组 特殊不定方程的应用
毕达哥斯拉定理其实就是勾股定理,x^2 + y^2 = z^2,满足这个方程的正整数三元组被成为毕达哥斯拉三元组定理:正整数x,y,z,构成一个本原毕达哥斯拉三元组且y为偶数,当且仅当存在互素的正整数n,m,(nx = m^2 - n^2y = 2 * m * n;i * z = m^2 + n^2解析前小广告!总是做算法,不如来个陶冶情操的文章一篇: http://www原创 2014-03-19 15:59:04 · 1628 阅读 · 0 评论 -
ZOJ2955 Interesting Dart Game 鸽巢原理优化 + 动规
看得出是一个以代价为1的背包,但是一开始不知道怎么优化,不愧是学长啊,居然做出来了,后来看了一下他们的思路,他们是优化到了10000以后进行背包的,后来看了他们的思路 自己有了新的想法,跟他们的优化不同,我对数组从小到大排序,然后利用鸽巢原理进行优化在鸽巢原理的介绍里面,有例题介绍:设a1,a2,a3,……am是正整数的序列,试证明至少存在正数k和l,1构造一个序列s1=a1,原创 2014-03-31 20:19:15 · 1218 阅读 · 3 评论 -
HDU3292 No more tricks, Mr Nanguo滥竽充数 特殊不定方程 + 矩阵应用
好题目!过的人比较少,不过咱还是过了,所以没关系,题目的综合力很好,题目讲的是南郭先生的故事,题意:国王喜欢听演奏,他喜欢的一个正方形 每行X个人来演奏,后来他挂了,他儿子喜欢 把原来的正方形拆成若干个小正方形,南郭很害怕,所以跑路了,他跑了以后,新的国王发现剩下的人刚好可以分成每组Y^2个人的 N组总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.原创 2014-03-19 21:10:16 · 965 阅读 · 0 评论 -
HDU3892 Common Roots 多项式欧几里德求最大公共多项式
这就是数论坑的地方了把,有些题目真心偏到你无法想象,需要用到多项式欧几里德求多项式的最大公共多项式题意:给你n个多项式,问他们有没有共同的根先分析把,假设有多项式a,b,同时又有多项式k,r,令 a = k*b +r,应题目要求,令解为0,那么a = 0,同时b也要等于0,那么这时候要满足a=b=0 其实 r = 0,这时候就不需要去管k了,有没有发现跟那个扩展欧几里德有点相似的方程,这时原创 2014-05-01 21:44:10 · 1232 阅读 · 0 评论 -
UVA 10951 Polynomial GCD 多项式欧几里德求最大公共多项式
今天作比赛遇上了HDU3892,都分析出来怎么做了,可惜不会求多项式的最大公共多项式,当时写了半天,案例也没有跑出来,赛后搜了一下题解,发现有大神做出了,而且是有模版的,不过又搜了一下关于这方面的题目,很少,只发现了这一道,所以先做一下这一道吧题意,给你两个多项式,求他们的最大公共多项式,然后输出即可,无齿的套用了别人的模版,呵呵!#include#include#in原创 2014-05-01 21:36:22 · 1634 阅读 · 0 评论