数论
文章平均质量分 50
SC.ldxcaicai
我很菜=_=
展开
-
2018.10.27 codeforces402D. Upgrading Array(数论+贪心)
传送门唉我觉得这题数据范围1e5都能做啊。。。居然只出了2000考完听zxyzxyzxy说我的贪心可以卡但过了?可能今天本来是0+10+00+10+00+10+0只是运气好T1T1T1骗了100pts100pts100pts吧233.下面讲讲贪心:令wi=∏i=1kpiaiw_i=\prod_{i=1}^kp_i^{a_i}wi=∏i=1kpiai令A=∑aipi是好质数,B...原创 2018-10-27 16:42:46 · 199 阅读 · 2 评论 -
2018.11.07 bzoj1965: [Ahoi2005]SHUFFLE 洗牌(快速幂+exgcd)
传送门发现自己的程序跑得好慢啊233.管他的反正AC了先手玩样例找了一波规律发现题目要求的就是a∗2m≡l(modn+1)a*2^m\equiv l \pmod {n+1}a∗2m≡l(modn+1)然后脑补了一波sbsbsb数学证明。假设当前牌aaa在第ppp个位置(为了方便假设在左半边,右半边的差不多)。然后在这一次洗牌之后会有2∗(p−1)+1=2∗p−12*(p-1)+1=2...原创 2018-11-07 21:46:39 · 156 阅读 · 0 评论 -
hdu2138 How many prime numbers(miller-rabbin)
传送门miller−rabbinmiller-rabbinmiller−rabbin素数测试的模板题。实际上miller−rabbinmiller-rabbinmiller−rabbin就是利用费马小定理和二次探测的性质来进行判断的。注意要多带几个素数进去判断(听大神说只要取遍了50以内的质数就可以判断intintint范围内的)代码:#include<bits/stdc++.h&...原创 2018-12-17 11:21:58 · 145 阅读 · 0 评论 -
bzoj4802: 欧拉函数(Pollard-rho)
传送门Pollard−rhoPollard-rhoPollard−rho模板题。题意简述:求ϕ(n),n≤1e18\phi(n),n\le 1e18ϕ(n),n≤1e18先把nnn用Pollard−rhoPollard-rhoPollard−rho分解质因数,然后就可以算了。代码:#include<bits/stdc++.h>#include<tr1/unordere...原创 2018-12-17 13:41:44 · 189 阅读 · 0 评论 -
bzoj3667: Rabin-Miller算法(Pollard-rho)
传送门Pollard−rhoPollard-rhoPollard−rho板题。题意简述:给出几个数,让你判断是不是质数,如果不是质数就求出其最大质因子,数的大小为1e181e181e18以内。先用miller−rabinmiller-rabinmiller−rabin判断是不是素数,然后上Pollard−rhoPollard-rhoPollard−rho质因数分解即可。代码:#incl...原创 2018-12-17 14:12:54 · 309 阅读 · 0 评论 -
bzoj1406 : [AHOI2007]密码箱(简单数论)
传送门简单数论暴力题。题目简述:要求求出所有满足x2≡1mod&ThinSpace;&ThinSpace;nx^2\equiv1 \mod nx2≡1modn且0≤x&lt;n0\le x&lt;n0≤x<n的xxx考虑到使用平方差公式变形。(x−1)(x+1)≡0mod&ThinSpace;&ThinSpace;n(x-1)(x+1...原创 2018-12-17 15:27:58 · 228 阅读 · 0 评论 -
bzoj2242: [SDOI2011]计算器(数论)
传送门数论基础题。对于第一种情况用快速幂,第二种用exgcdexgcdexgcd,第三种用bsgsbsgsbsgs于是自己瞎yyyyyy了一个bsgsbsgsbsgs的板子(不知道是不是数据水了没卡如果有找出错的希望指正谢谢)下面谈谈我对这个方法的理解。实际上跟网上说的差不多。要解ax≡bmod&amp;ThinSpace;&amp;ThinSpace;pa^x\equiv b\mo...原创 2018-12-18 23:14:06 · 151 阅读 · 0 评论 -
bzoj5296: [Cqoi2018]破解D-H协议(bsgs)
传送门bsgsbsgsbsgs基础题。考虑到给的是原根,因此没无解的情况。于是只需要每次把a,ba,ba,b解出来。然后可以通过预处理节省一部分时间。代码:#include<bits/stdc++.h>#include<tr1/unordered_map>#define ri register intusing namespace std;inline...原创 2018-12-18 23:48:45 · 136 阅读 · 0 评论 -
扩展埃氏筛入门
感觉和min_25min\_25min_25筛挺像的???(大雾听说貌似可以求很多东西的样子,于是就去入了个门(然而啥题都不会做。参考博客:litble巨佬的与扩展埃氏筛(min_25筛?)玩耍用拓展埃氏筛处理一些与素数有关的问题e.g.1e.g.1e.g.1 求111~ n\ n n之间的素数个数,n≤1011n\le10^{11}n≤1011传送门貌似线性筛会T...原创 2019-06-09 17:06:39 · 484 阅读 · 0 评论 -
bzoj3283: 运算器(exbsgs+exLucas)
传送门几个数论板子拼一起的。。。代码:#include<bits/stdc++.h>#define ri register int#define fi first#define se secondusing namespace std;const int rlen=1<<18|1;inline char gc(){ static char buf[...原创 2019-06-26 17:26:32 · 161 阅读 · 0 评论 -
hdu5628 Clarke and math(狄利克雷卷积快速幂)
传送门一眼题。。。注意不能有行末空格233分析一下显然有g=Ik∗fg=I^k*fg=Ik∗f直接上狄利克雷卷积+快速幂即可。。。复杂度O(nlogn2)O(n\log n^2)O(nlogn2)代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int rlen=1...原创 2019-08-02 13:27:39 · 382 阅读 · 0 评论 -
2018.10.24 NOIP模拟 小 C 的序列(链表+数论)
传送门考虑到a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r...原创 2018-10-24 20:12:36 · 238 阅读 · 0 评论 -
2018.10.31 NOIP模拟 一串数字(数论+贪心)
传送门把每一个数aaa质因数分解。假设a=p1a1∗p2a2∗...∗pkaka=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}a=p1a1∗p2a2∗...∗pkak然后可以转化成a′=p1a1mod3∗p2a2mod3∗...∗pkakmod3a&amp;#x27;=p_1^{a_1mod3}*p_2^{a_2mod3}*...*p_k^{a_kmod3}...原创 2018-10-31 19:16:26 · 150 阅读 · 0 评论 -
2018.10.26 bzoj2721: [Violet 5]樱花(数论)
传送门推一波式子:1x+1y=1n!\frac 1 x+\frac 1 y=\frac 1 {n!}x1+y1=n!1=>xy−x∗n!−y∗n!xy-x*n!-y*n!xy−x∗n!−y∗n! = 000=>(x−n!)(y−n!)=(n!)2(x-n!)(y-n!)=(n!)^2(x−n!)(y−n!)=(n!)2于是把(n!)2(n!)^2(n!)2质因数分解就行...原创 2018-10-26 21:56:49 · 198 阅读 · 0 评论 -
2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)
传送门 一道神奇的搜索。 直接枚举每个质因数的次数,然后搜索就行了。 显然质因数k次数不超过logknlogknlog_kn,因此搜索很快。 注意,如果最后剩下的乘积-1是一个质数,那么这是一个可行解。 另外对于这道题,我们只需要筛出1e5的素数就够了,太大的直接枚举自己打的素数表判就行了。 代码:#include<bits/stdc++.h>#define N ...原创 2018-09-11 19:23:06 · 139 阅读 · 0 评论 -
2018.09.11 poj1845Sumdiv(质因数分解+二分求数列和)
传送门 显然需要先求出ababa^b的所有质因数和它们的指数。 但求出来之后并不能直接上等比数列求和公式。 因为这道题并不能直接求逆元。 原因? a的某个因数有可能已经大于9901了。 于是它可能是9901的倍数。 这样就gg了。 于是我们可以二分求解等比数列的和。 代码:#include<iostream>#include<cmath>#de...原创 2018-09-11 19:58:38 · 136 阅读 · 0 评论 -
2018.09.09 bzoj4403: 序列统计(Lucas定理)
传送门 感觉单调不降序列什么的不好做啊。 于是我们序列中下标为i的元素的值加上i,这样就构成了一个单调递增的序列。 问题就变成了: 求出构造长度分别为1~n且每个元素的值在l+1~r+n之间的单调递增的序列的总方案数。 那么对于一个长度为i的序列,构造出的方案数显然就是(r−l+ii)=(r−l+ir−l)(r−l+ii)=(r−l+ir−l)\binom {r-l+i} {i}=\bi...原创 2018-09-09 13:05:55 · 201 阅读 · 0 评论 -
2018.09.09 bzoj3505: [Cqoi2014]数三角形(容斥原理+简单计数)
传送门 正难则反。 可以直接把问题转化成求出三点共线的情况数量。 如果同在一排或一列显然可以直接算,关键是如何求出斜着的。 我们知道,对于一个整点矩形。 如果长为x,宽为y,那么这个矩形任意一条对角线上有gcd(x,y)个整点。 由于n,m很小,我们直接枚举矩形的边长去掉不合法的情况就行了。 细节有点多。 代码;#include&lt;bits/stdc++.h&gt;#...原创 2018-09-09 13:28:39 · 187 阅读 · 0 评论 -
2018.09.17 atcoder Digit Sum(数论)
传送门数论好题啊。首先对于b&amp;lt;=sqrt(n)b&amp;lt;=sqrt(n)b&lt;=sqrt(n)的情况直接枚举b判断一下就行了。下面谈一谈如何解决b&amp;gt;sqrt(n)b&amp;gt;sqrt(n)b&gt;sqrt(n)的情况。如果b&amp;gt;sqrt(n)b&amp;gt;sqrt(n)b&gt;sqrt原创 2018-09-17 21:31:16 · 386 阅读 · 0 评论 -
2018.09.19 atcoder Card Game for Three(组合数学)
传送门简单组合数学想优化想了半天啊233。我们只需考虑翻开n张A,b张B,c张C且最后一张为A的选法数。显然还剩下m+k−b−cm+k-b-cm+k−b−c张牌没有选。这样的话无论前n+b+cn+b+cn+b+c张牌怎么选,方案数会乘上一个3m+k−b−c3^{m+k-b-c}3m+k−b−c。继续讨论。我们应该从前n+b+c−1n+b+c-1n+b+c−1中选出n−1n-1n−1个A...原创 2018-09-19 21:17:25 · 350 阅读 · 0 评论 -
2018.09.14 bzoj2982: combination(Lucas定理)
传送门 貌似就是lucas的板子题啊。 练一练手感觉挺舒服的^_^ 代码:#include&lt;bits/stdc++.h&gt;#define mod 10007#define ll long longusing namespace std;int T_T;ll n,m,fac[mod+5],ifac[mod+5];inline ll lucas(ll a,ll b)...原创 2018-09-14 22:58:26 · 124 阅读 · 0 评论 -
2018.10.05 NOIP模拟 阶乘(简单数论)
描述有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值。输入共两行。第一行一个正整数n。第二行n个正整数a[i]。输出共一行一个正整数m。样例输入16样例输出3提示样例解释:当p=6,q=1时,p*q=3!【数据范围与约定】对于10%的数据,n&amp;lt;=10对于30%的数据,n&amp;lt;=1000对于1...原创 2018-10-11 23:45:09 · 288 阅读 · 0 评论 -
2018.09.28 牛客网contest/197/A因子(唯一分解定理)
传送门比赛的时候由于变量名打错了调了很久啊。这道题显然是唯一分解定理的应用。我们令P=a1p1∗a2p2∗...∗akpkP=a_1^{p_1}*a_2^{p_2}*...*a_k^{p_k}P=a1p1∗a2p2∗...∗akpk。那么对于每一个质因子aia_iai我们都可以计算出它在n!n!n!中出现bib_ibi次,每次计算是O(logain)O(log_{a_i} ...原创 2018-09-28 23:34:03 · 134 阅读 · 0 评论 -
2018.09.28 牛客网contest/197/C期望操作数(状态转移+前缀和递推)
传送门比赛手动打了四项感觉有规律,调了40min+之后重新手算了后面几项发现只有前四项满足规律233。首先这道题只跟q−xq-xq−x有关。我们尝试找找递推关系。我们令f[i]f[i]f[i]表示区间左右端点之差为i时的期望步数。那么显然有:f[0]=f[0]=f[0]=不存在(方便计算可以看做0)f[1]=(f[0]+f[1])2+1f[1]=\frac {(f[0]+f[1])...原创 2018-09-29 00:02:18 · 185 阅读 · 0 评论 -
2018.10.15 NOIP训练 hyc的等比数列(数论+枚举)
传送门一道不错的枚举题。显然桶排序之后瞎枚举一波。考虑枚举首项和末项,假设首项除去一个最大的平方因子得到的结果为xxx。那么末项一定等于xxx乘上一个平方数。于是我们枚举首项,算出xxx然后O(sqrt(amax))O(sqrt(a_{max}))O(sqrt(amax))枚举末项。这样算出来应该是正确答案。注意处理公比为1的情况。代码...原创 2018-10-15 14:44:48 · 177 阅读 · 0 评论 -
2018.10.26 poj3421X-factor Chains(数论+排列组合)
传送门排列组合入门题。令X=p1a1p2a2..pkakX=p_1^{a_1}p_2^{a_2}..p_k^{a_k}X=p1a1p2a2..pkak那么答案1就等于∑i=1kai\sum_{i=1}^ka_i∑i=1kai答案2等于(∑i=1kai)!∏i=1ka[i]!\frac {(\sum_{i=1}^ka_i)!} {\prod_{i=1}^ka[i]!}∏i=...原创 2018-10-26 20:23:47 · 196 阅读 · 0 评论 -
2018.09.01 poj2689 Prime Distance(埃式筛法)
传送门 一道挺有趣的。 第一眼以为每个数都用miller_rabin判一次,但感觉会被卡时间啊。 继续分析发现可以晒出sqrt(r)中的所有素数,然后用类似埃式筛法的方法晒出[l,r][l,r][l,r]之间的素数。 然后就没了。 代码:#include<iostream>#include<cstdio>#include<cstring>...原创 2018-09-01 13:50:22 · 207 阅读 · 0 评论