HDU3930(离散对数与原根)】的更多相关文章

题目:Broot 题意:给出k,m,newx的值,求方程x^k(mod m)=newx的解,其中m为素数. 解法步骤: (1)先暴力求m的原根g (2)大步小步求g^t1(mod m)=newx (3)则g^(t1+n*t2)(mod m)=newx,t2=m-1 (4)x=g^y(mod m),x^k=(g^y)^k=g^(yk)=g^(t1+n*t2) 那么就是求同于方程yk=t1(mod t2),求出y之后带入x=g^y(mod m)解出x #include <iostream> #in…
原根&离散对数 1.原根 1.定义: 定义\(Ord_m(a)\)为使得\(a^d\equiv1\;(mod\;m)\)成立的最小的d(其中a和m互质) 由欧拉定理可知: \(Ord\le\Phi(m)\) 当\(Ord_m(a)=\Phi(m)时,称a是模m意义下m的一个原根\)(记住原根是a,不是d!) 2.原根的性质: 1.具有原根的数字仅有以下几种形式:\(2,4,p^n,2·p^n\)(p是奇质数) 2.一个数的最小原根的大小不超过 \(m^{\frac14}\) 3.若g是m的一个原…
不忘初心,方得始终 袛园精舍钟声响,奏诸世事本无常.沙罗双树失花色,盛者转衰如沧桑.骄者难久,恰如春宵一梦.猛者遂灭,好似风前之尘.    ——题记   人生中最令人恐惧的恐怕就是选择了,现在的你拥有选择的权利,而未来的你却没有后悔的权利.命数仿佛大海般起伏不定,难以预料.机缘巧合之下,我选择了OI的道路,我的人生也必会产生翻天覆地的变化.2016年11月11日,月光如水,站在窗前,仰望浩瀚的星辰,我不禁反问自己,我的选择真的正确吗?   自中考失利,无缘郑外,我的心情一直很低落,直到加入OI的…
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=61632537 向大(hei)佬(e)势力学(di)习(tou) 这已经是第二次系统的学数论了,idy学长讲的好清晰.学得糊怪我. 1 一元一次同余方程 2 二元一次不定方程 3 欧拉定理 4 逆元 5 中国剩余定理 6 Lucas 定理 7 容斥原理 8 卡特兰数 9 各种组合数求法 10 积性函数 11 线性筛 1一元一次同余方程 如何解形如 ax≡b…
给定方程 X^A = B (mol C)  ,求 在[0,C) 中所有的解 , 并且C为质数. 设 rt 为 C 的原根 , 则 X = rt^x  (这里相当于求 A^x =B (mol C) 用大步小步算法即可) 那么 ( rt^x ) ^ A = b (mol C) rt^Ax = b (mol C) 由费马小定理, 设 Ax = (C-1)*y +t1   ---------------- ( * ) 可得  rt^t1 =b ( mod C) 这里运用大步小步算法可以计算出 t1 .…
3992: [SDOI2015]序列统计 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1017  Solved: 466[Submit][Status][Discuss] Description 小C有一个集合S,里面的元素都是小于M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S. 小C用这个生成器生成了许多这样的数列.但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中…
离散对数问题,英文是Discrete logarithm Problem,有时候简写为Discrete log,该问题是十几个开放数学问题(Open Problems in Mathematics, [0.a], [0.b])中的一个.为什么要从离散对数问题说起?因为后面的内容中会反复使用到,因此我们希望用独立的一节分析来消除理解上的不确定性. 0x01 背景 对数\(\log_{b}(a)\)是由John Napier发明(1614)的符号([1],[2.a],[2.b]),选择不同的基底,就…
题目链接 \(Description\) 给定\(n,m,x\)和集合\(S\).求\(\prod_{i=1}^na_i\equiv x\ (mod\ m)\)的方案数.其中\(a_i\in S\). \(n\leq10^9,3\leq m\leq 8000且m是质数,1\leq x\leq m-1\). \(Solution\) 令\(f_{i,j}\)表示当前选了\(i\)个数,乘积模\(m\)为\(j\)的方案数,\(g_i=[i\in S]\). 转移就是,\[f_{i,a*b\%m}=…
题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法,然后就可以用bitset优化dp了. 裸的dp方程是f(i,j)=f(i-1,j)+f(i-1,(j-I(a(i)))%2016),第一维可以滚动.I(i)规定为i的指标,但是我们这里不像<数论概论>那本书上把I(1)规定为2016,而当成0,比较方便. #include<cstdio&g…
题目传送门 matthew99神犇的题解讲得非常清楚明白,跪烂Orzzzzzzzzzzzzz 总结一下,本题有很多重要的突破口 1.Lucas定理 看到n,m特别大但模数特别小时,容易想到$lucas$定理 $C_{n}^{m}=C_{n/p}^{m/p}\cdot C_{n\;mod\;p}^{m\;mod\;p}\;(mod\;p)$ 但普通的$lucas$显然不适用于多次计算,我们可以把$lucas$定理展开 我们把$n$和$m$都看成两个$p$进制数$a$和$b$ $C_{n}^{m}=…