数论
gwq5210
这个作者很懒,什么都没留下…
展开
-
nyoj 26 孪生素数 素数筛法
nyoj 26 孪生素数原创 2014-10-10 22:18:57 · 696 阅读 · 0 评论 -
uvaoj 11029 Leading and Trailing 取log和快速幂
uvaoj 11029 Leading and Trailing 取log和快速幂 给定n和k,求n^k的最低三位和最高三位,数字很大,不能直接求出来。最低三位可以使用快速幂在logk的复杂度下解决。 对于最高三位,设log为以10为底的对数,那么log(n^k)=klogn,这个值很容易算出来,我们设n^k用科学计数法表示为d*10^p,其中d为大于等于1小于10的实数,p为整数。那么log原创 2015-01-09 19:19:52 · 479 阅读 · 0 评论 -
uvaoj 10820 Send a Table 欧拉函数打表
uvaoj 10820 Send a Table 欧拉函数打表 这个题目就是让求小于等于n的数中,互质二元组(x,y)的个数。因为(x,y)和(y,x)不同,我们假定只考虑x 下面先介绍一下欧拉函数: 在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。 此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 欧拉原创 2015-01-09 14:57:57 · 568 阅读 · 0 评论 -
uvaoj 571 Jugs 互质数
uvaoj 571 Jugs 互质数 本题只要求给出一个解,不要求最优。所给的两个罐子容量一定互质,因此必然可以倒出从0到大罐容量间的任何整数值。原理是若A,B互质,则最小公倍数为A×B,即不存在一个1 现在的问题就是用AB两个罐子相互倒水来模拟这个数学过程。设小罐容量为A,大罐容量为B。每次将A装满后倒入B中。若第m次后B已装满,A剩下的水量为r1,则有: r1 = mA mod B原创 2015-01-09 17:22:30 · 491 阅读 · 0 评论 -
uvaoj 11121 Base -2 整数转成负数进制
uvaoj 11121 Base -2 整数转成负数进制 给定一个十进制的数,将其转成-2进制的数。也就是n=b0+b1*(-2)+b2*(-2)^2+b3*(-2)^3...。其中bi为0或1。 算法的描述很简单:n mod -2 余数可能为-1,0,1,但是不能出现-1,只能有0,1所以将-1变为1,并且商要加1。然后依此迭代直到商为0为止。 先来看看对一个数n变成m(m>0)进原创 2015-01-09 10:52:27 · 568 阅读 · 0 评论 -
uvaoj 138 Street Numbers 佩尔方程
uvaoj 138 Street Numbers 佩尔方程 这道题可以用暴力搜索的方法来做,算法效率是O(n3),但事实上是可以用数论的方法来生成所有解的,下面将用最简单的数学语言进行介绍。 设全部的房子数为n,她住的为k,那么按照题目的要求n和k必须满足: 1 + 2 + ... + (k – 1) = (k + 1) + (k + 2) + ... + (n) (1) 用等差原创 2015-01-09 00:42:14 · 476 阅读 · 0 评论 -
uvaoj 106 Fermat vs. Pythagoras 毕达哥拉斯三元组
uvaoj 106 Fermat vs. Pythagoras 毕达哥拉斯三元组 给定方程x^2+y^2=z^2,在1到1000000范围内找出三元组(x,y,z)的数目,其中三元组要求x 这个方程与勾股定理有密切的关系。 1. 勾股定理和勾股数(毕达哥拉斯数) 勾股定理可以说是全部数学中最古老也最家喻户晓的一个定理,在西方它被称为毕达哥拉斯定理(Pythagorean Theore原创 2015-01-08 21:34:46 · 850 阅读 · 0 评论 -
10673 Play with Floor and Ceil 简单数学
10673 Play with Floor and Ceil 简单数学 用表示向下取整floor,ceil表示向上取整。那么对于x=p*floor(x/k)+q*ceil(x/k),存在一组或多组p,q使得式子成立。现在给定x和k,求出任意一个p和q。 经过简单分析就可以得到:p+q=k,q=x%k。 代码如下: /*************************************原创 2015-01-06 20:14:16 · 469 阅读 · 0 评论 -
组合数C(n,m)的求法总结,卢卡斯定理
组合数C(n,k)的求法总结 与组合数有关的两个最重要内容是杨辉三角和二项式定理。 杨辉三角前10行如下所示: 另一方面,将(a+b)^n展开,系数正好和杨辉三角一致。 一般有(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+...+C(n,n)b^n。 给定n,如何求出(a+b)^n所有项的系数呢? 方法一,递推,利用杨辉三角的性质,当前数等于上方两个数的和,原创 2015-01-27 19:21:20 · 2284 阅读 · 0 评论 -
uvaoj 12169 Disgruntled Judge 扩展欧几里得算法
uvaoj 12169 Disgruntled Judge 扩展欧几里得算法 一个裁判,找了3个整数x1,a和b,按照递推公式xi=(axi-1+b)%10001,计算出了一个长度为2n的序列,n是测试数据的组数,然后他把n和x1,x3,。。。,x2n-1写到输入文件中,x2,x4,。。。,x2n写到输出文件中。你的任务是找出对应的x2,x4,。。。,x2n。任意输出一个合法的。 如果知道了a原创 2015-01-27 14:15:14 · 581 阅读 · 0 评论 -
uvaoj 138 Software CRC 大数取模
uvaoj 138 Software CRC 大数取模 求循环冗余检验(CRC)的值,循环冗余检验在计算机网络中应该提到过,计算的方法差不多。不过这里固定了要在后边加上2个字节的数,加上两个字节后,就组成了一个很大的整数,这个整数要处理34943为0,我们就设计算出来的检验位为x,原数为n,那么合起来的数为m=(n 代码如下: /*******************************原创 2015-01-06 19:03:13 · 573 阅读 · 0 评论 -
欧几里得算法与扩展欧几里得算法
欧几里得算法与扩展欧几里得算法 一,欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 第一种证明: a可以表示成a = kb + r,则r = a mod b。 假设d是a,b的一个公约数,则有d|a,转载 2015-01-25 11:59:50 · 544 阅读 · 0 评论 -
uvaoj 10375 Choose and divide 唯一分解定理
uvaoj 10375 Choose and divide 唯一分解定理 已知C(m,n)=m!/(n!(m-n)!),输入整数p,q,r,s(p>=q,r>=s,p,q,r,s 可以使用唯一分解定理来做,用一个数组表示唯一分解式中各个素数的指数,可正可负。每乘上一个整数,就把相应的素因子指数上加上相应指数,除也一样。 代码如下: /****************************原创 2015-01-25 10:55:55 · 603 阅读 · 0 评论 -
uvaoj 10791 Minimum Sum LCM 类似欧拉定理的写法
uvaoj 10791 Minimum Sum LCM 类似欧拉定理的写法 给定一个数n,求一个集合,这个集合的最小公倍数是n,并且这个集合中数的和最小。 处理好集中情况: 1)n为1时,应该输出2。 2)n为素数时,应该输出n+1。 3)n为某个素数的次方,即只有一个质因子,应该输出n+1。 4)n为2^31-1时,这个数为质数,应该输出2^31,所以要考虑用long long。原创 2015-01-06 22:40:53 · 484 阅读 · 0 评论 -
uvaoj 10006 Carmichael Numbers 快速幂取模
uvaoj 10006 Carmichael Numbers 快速幂取模原创 2015-01-05 23:56:25 · 521 阅读 · 0 评论 -
uvaoj 12716 GCD XOR 打表
uvaoj 12716 GCD XOR 打表 输入整数n(1 对于异或运算,有a^b^b=a,所以可以推出,若a^b=c,则a^c=b,可以枚举a和c,算出b,验证是否有gcd(a,b)=c,注意到c是a的约数,所以,可以使用素数筛法的方法,复杂度为nlogn。 进一步可以发现,c=a-b,因为a-b=c,假设存在c使得a-b>c,那么c 代码如下: /*****************原创 2015-01-21 21:59:56 · 491 阅读 · 0 评论