![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 79
sdj222555
这个作者很懒,什么都没留下…
展开
-
HDU 3641 Treasure Hunting
这道题貌似是10年杭州网络赛的题,乍一看挺唬人的,数据范围那么大。实际上就是个简单数论,看完题就想到解法了,只不过细节上要注意很多。下面是详细解法:a1^b1*a2^b2*a3^b3…*an^bn ,对于这个序列,我们把每个a都质因子分解,然后整个序列中质因子的种类和个数就都知道了,然后就要求X了,对于某个X的阶乘中含有的某个质因子的个数,这个有个很简单的结论,也很好理解,log(n)时间原创 2011-10-31 11:48:47 · 1115 阅读 · 0 评论 -
HDU 3758 Factorial Simplification 数论
这题就考一个知识点,就是求阶乘中某个素数因子的个数题意不再说了具体思路就是把分子的所有素因子以及其个数存起来。分母也是。然后看对应的素因子的个数分子是否都不小于分母就可以判断是不是整数如果是整数进行下一步每次二分寻找能整除的最大阶乘的数。直到找不到大于1的数用二分是因为阶乘的素因子个数一定是非递减的。二分的上下界多大呢。下界是2,题目给定了上界就不好说了。原创 2012-09-14 00:42:51 · 1254 阅读 · 0 评论 -
POJ The Luckiest number 3696 数论(处理快速幂过程中超int64的情况)
此题大意就是给出一个数x 问他是否能乘以某个数后变成另一个数,使得每位都是8,然后问这个数的长度我们观察888....这种数,可以发现,一个数如果能乘以某个数变成他,因子中不能有5,并且最多有3个2.那么我们就先把所有的2因子都去掉,下面就是看他是否能乘某个数变成111....这样的数了而111.... =( 10^m - 1) / 9 并且111...要mod x原创 2012-09-16 10:36:29 · 2991 阅读 · 0 评论 -
Regionals 2011, Asia - Phuket D题 Twin Apparent Primes!! 打表
给出n和t, 求一个n位的数p,使得p和p+2都不能整除以2到t的所有整数一眼看上去貌似是一个比较高深的数论,因为3500 而从hust上看到各种人以错误的代码水过了这道题,我表示很不理解这题具体的证明我还不知道,因为我数论很弱。不过可以用打表的方法水过去。观察t,因为t最大是8000,并且如果一个数满足t= 8000的情况,那么一定满足所有小于8000的情原创 2012-10-08 19:47:44 · 1469 阅读 · 0 评论 -
康托展开与其逆运算
X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,a为整数,并且0康托展开的应用实例:{1,2,3,4,...,n}表示1,2,3,...,n的排列 如 {1,2,3} 按从小到大排列一共6个。123 132 213 231 312 321 。 代表的数字 1 2 3 4 5 6 也就是把10进制数与一个排列对应起来原创 2012-10-24 09:09:57 · 2773 阅读 · 0 评论 -
Project Euler problem 26 分数化小数
本题主要是计算的1 / x小数的循环节的长度是多少分数化小数其实也挺简单的对于一个分母为x的分数那么他的小数循环节长度最多为x- 1 这也是我打表得出的规律所以数组的大小需要注意了这个题中x 那么开两个1000的数组就OK了。直接算的程序如下#include #include #include #include #includ原创 2012-11-04 16:10:21 · 949 阅读 · 0 评论 -
POJ 2429 GCD & LCM Inverse Pollard_rho大数因子分解
这题的话。假设原来的数是a和b,给出GCD和LCM以后我们只需要求一下LCM/GCD 的因子 就可以求出 a/gcd 和 b/gcd 然后求出的这两个东西之间不能有公约数所以一个数取因子的时候要把某个因子全拿走用的是Pollard_rho进行分解这种比较大的数。复杂度的话,假设分解出一个因子是p,用的时间是O(sqrt(p))总体来说比你直接sqrt(n)分解快多原创 2013-09-07 14:10:42 · 1405 阅读 · 0 评论 -
ZOJ 3562 Alice's Sequence I 中国剩余定理 不互质
不互质的中国剩余定理就不能直接方程组那样搞了两个两个的搞就行然后求出的解之间的间隔是固定的。#include #include #include #include #include #include #include #include #include #include #include #define MAXN 111111#define MA原创 2013-10-30 17:08:37 · 1316 阅读 · 0 评论 -
POJ 3744 Scout YYF I 简单递推
题意就是一个人, 站在坐标为1的点处,然后每次走路有p的概率一下走出去坐标1,1-p的概率一下走出去坐标2路上某些点(n 想一下就知道这些雷之间实际上是独立不相关的可以分段考虑然后互相之间乘一下就行假设有个雷在x点现在人在坐标1然后不踩雷就得从1点到x-1点并且从x-1点迈出坐标2到x+1从x-1迈出坐标2到x+1的概率是1-p之前1到x-1这段原创 2015-01-21 21:42:37 · 892 阅读 · 0 评论 -
POJ 3716 Panda's Birthday Present 条件概率
看了http://hi.baidu.com/bfcdygoporbjuxr/item/569897ddc1fc561d21e2503f 这个题解感觉写的有点费劲 , 而且虽然写了一点关于公式(m+n+10)/7的,但我感觉还是不好理解啊。不过其中讲的主要思路还是有用的。对于一个骰子 有t个面为1的概率是 P(T=t)=C(6,t)/64。在有t个面为1的情况下,投n次,原创 2015-01-22 20:26:10 · 1582 阅读 · 1 评论 -
POJ 3761 Bubble Sort 冒泡排序的扩展
给一个序列,如果经过k次冒泡能使其变为单增序列,则称该序列为k回合冒泡序列现在给你n,k, 问在n的全排列中,k回合冒泡序列有多少个这题看规模就是要推一个公式出来discuss里的一个解法非常好,让人可以理解对于n个元素,假设为{0,1,...n- 1},可以发现对于任意一个排列,假设L(i) 表示位置i上的元素的前面有多少数字比它大, 那么得到了一个L序列。那么可原创 2015-01-23 15:29:37 · 1032 阅读 · 0 评论 -
HDU 4335 What is N? 简单数论
此题就是考察了一个简单的公式a^x % c = a^(x % phi(c) + phi(c)) %c 其中x>= phi(c)phi(c)为欧拉函数注意 欧拉函数的定义为 不超过n且与n互素的正整数的个数 而不是小于n并且phi(1) =1 然后对于本题 分成三部分第一部分 n! 第二部分 n! >= phi(c) 但是 n! % phi(c)原创 2012-08-04 13:44:00 · 1602 阅读 · 0 评论 -
UESTC 1712 Easy Problem With Numbers 线段树+扩展欧几里得求逆元
这题是今年四川省赛的E题, 如果懂逆元的话很容易想到做法,不懂的话就像我似的 沙茶了。四处求许久,求得神牛代码一份,思路一份,写了许久后最终得以A掉此题。题意就不再说了,如果你知道product是乘积的意思的话这题就不难理解附上神牛原版思路:如果这个题只有乘法,那么你肯定会做吧?线段树更新区间查找区间。那么有除法呢?当一个数x和m互质的时候,除以x可以改为乘以x的逆原创 2012-07-16 01:45:20 · 1915 阅读 · 1 评论 -
POJ 2976 01分数规划
刚做完了最优比率生成树 就瞬间来了感觉了题目大意就 给定n个二元组(a,b),扔掉k个二元组,使得剩下的a元素之和与b元素之和的比率最大题目求的是 max(∑a[i] * x[i] / (b[i] * x[i])) 其中a,b都是一一对应的。 x[i]取0,1 并且 ∑x[i] = n - k;那么可以转化一下。 令r = ∑a[i] * x[i] / (b[i]原创 2012-04-23 20:51:26 · 1547 阅读 · 0 评论 -
第36届ACM大连赛区I题 The Boss on Mars
今天现场赛模拟来着,D题做的很快,15分钟就出了,然后就一直死磕I题了,刚开始想到了要减去不互素的数,结果不知道容斥原理,只能赛后AC了。大体思路就是,先算出1到n的四次方和,然后减去不互素的四次方和,然后计算这个就比较麻烦了,首先把n给素数分解,然后就运用容斥原理,各种减减加加,目的就是防止减掉重复的,比如2的倍数有2,4,6,8……,3的倍数有3,6,9……,然后2和3中都有6,所以这原创 2011-10-02 19:05:36 · 4620 阅读 · 0 评论 -
POJ 1942 Paths on a Grid 组合数
这道题其实就是组合数,题目给了m,n,实际上路径的长度已经确定了,就是m+n,但在这些路径中必须有m个向右走的,n个向上走的,这样才能到达终点这就变成了求组合数C(m + n, n) 其中n必须是m,n中较小的那个,这样速度还快些在求组合数的时候,要避免的是越界问题,所以每次我都是先除,然后再乘,除的时候也不能直接除,一定要求了公约数后再除,这样才是整除。/*ID: sdj22251原创 2012-01-24 13:09:46 · 905 阅读 · 0 评论 -
POJ 1026 Cipher 置换群
题目大意就是给出1~n的置换序列, 然后给出一个整数k,和一个串问置换k次后的串是什么样子的。首先,给出的串的长度是小于等于n的,不足的位置要补上空格。然后置换k次,不是直接就循环着置换,因为置换内的每个循环都是有一定长度的,如果超过这个长度的置换次数,必然会和前面的某个状态一样,所以对每个循环,如果长度为len,循环内的元素只需要置换k%len次即可。第一次看置换群得概念,不原创 2012-01-29 15:36:33 · 1072 阅读 · 0 评论 -
POJ 1222 EXTENDED LIGHTS OUT 枚举 || 高斯消元
题目大意就不说了,就是把棋盘上的1全变0即可如果枚举的话,看似有2的30次方中可能,其实不是。实际上只需要枚举第一行的状态即可,再往后,如果想要解决问题,必须根据第一行的状态推下去。对于每个位置,如果上一行的这一列有1,必然这个按键要按下去,不然不可能达到要求的结果。枚举代码如下,直接使用二进制枚举/*ID: sdj22251PROG: subsetLANG: C++*原创 2012-02-09 21:19:49 · 1118 阅读 · 0 评论 -
POJ 2084 卡特兰数
卡特兰数百科名片卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。原理 令h(1)=1,h(2)=1,catalan数满足递归式: h(n)= h(1)*h(n-1)+h(2)*h(n-2) + ... + h(n-1)原创 2012-02-15 12:31:02 · 3621 阅读 · 0 评论 -
CF #109 div2 D题 Colliders
这道题应该算是简单题了。不过我写的太暴力,超时了。。。参考了别人的想法,先用最暴力的筛法,把每个数最小的质因子记录下来。然后开10W个set,每次操作,如果要插入一个数x,如果没有冲突,往里加的时候,对每个他的质因子p,将x插入set[p]中,判断冲突的方法也类似,对每个他的质因子,如果质因子的set不为空,说明有冲突,将set中的第一个元素输出即可,然后删除操作的时候则是set自带的eras原创 2012-02-25 12:58:37 · 739 阅读 · 0 评论 -
POJ 2407 Relatives 欧拉函数
题意很明确,比n小且与n互质的数的个数欧拉函数就是用来解决这个的首先要知道 【定理】正整数n(n≥2)可以唯一分解成素数乘积,即:n =p[1]^r1 * p[2] ^r2 * p[3]^r3. *...* p[s]^rs其次欧拉函数有两个性质,可以用来编程,单独求phi函数:① Ø(m) = m ( 1- 1/p[1]) ( 1- 1/p[2])…( 1-原创 2012-01-24 15:23:44 · 808 阅读 · 0 评论 -
POJ 2409 Let it Bead polya 定理 和 置换
这道题应该是比较裸的一道题目了。最开始做的时候完全想不到用什么gcd之类的东西。。。然后直接模拟旋转和翻转的过程求置换群去了。虽然结果是对的,不过是n2的算法,还好题目的数据很小。先进的算法可以看http://blog.csdn.net/shiren_Bod/article/details/5664934//*ID: sdj22251PROG: subsetL原创 2012-03-27 09:34:14 · 813 阅读 · 0 评论 -
Codeforces Round #112 (Div. 2) E题 位运算
大意就是给出一个序列,对每个元素,看序列中是否存在另一个元素跟他按位与的值为0,然后输出这个元素数列的长度很大,所以n2肯定挂掉。当时想到了对每个数,可能有400多万种情况,但是却没想到去预处理。正解就是预处理了,对于一个二进制数,如果数位中的一些1变成0后,能够变成序列中的某个数,那么就将这个二进制数指向那个数。然后对某个元素,要找能使跟他按位与为0的元素,只要满足能把这个元素的二进原创 2012-03-17 12:51:24 · 1056 阅读 · 0 评论 -
HDU 3988 数论
考察的知识点很简单,就是分解质因数,和求出阶乘内某个质因子的个数。分解完质因子后,记录下每个质因子的个数,然后计算阶乘内该因子的个数,所有的求完后即可得到答案/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #i原创 2012-04-10 22:36:47 · 1073 阅读 · 0 评论 -
HDU 3609 高次幂取模
题意不再赘述具体运用见初等数论/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2012-04-13 12:04:08 · 931 阅读 · 0 评论 -
POJ 3785 The Next Permutation 全排列字典序法
给一个排列 求下一个排列 按字典序跟普通排列不同的地方就是 有相同的数字那么就把普通的一改就完事#include #include #include #include #include #include #include #include #include #define MAXN 222#define MAXM 6122222#define INF 10000原创 2015-01-23 00:53:15 · 1373 阅读 · 1 评论