![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 56
Freopen
这个作者很懒,什么都没留下…
展开
-
Nim积
我也只会模板可以用类似大整数分治乘法的思路用Fermat 2-power\texttt{Fermat 2-power}Fermat 2-power做到比较快的log2\log^2log2计算。(只用分成四个乘法而非五个。)真正的优化其实是部分记忆化#include<bits/stdc++.h>#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)#define per(i,j,k) for(int i=(原创 2020-07-29 16:44:50 · 667 阅读 · 0 评论 -
LOJ #2476. 「2018 集训队互测 Day 3」蒜头的奖杯(三元环计数)
题目泰勒应天下大雨!类似于SDOI2018SDOI2018SDOI2018旧试题。给DDD,EEE,FFF卷上μ\muμ。得到D′,E′,F′D',E',F'D′,E′,F′。原式变为∑i,j,kAiBjCk∑a∣i,a∣jDa′∑b∣i,b∣kEb′∑c∣j,c∣kFc′\sum_{i,j,k} A_iB_jC_k \sum_{a|i,a|j} D'_a \sum_{b|i,b|k} E'_b \sum_{c|j,c|k} F'_ci,j,k∑AiBjCka∣i,a∣j∑Da′b∣i原创 2020-07-03 21:12:58 · 493 阅读 · 0 评论 -
20200603 模拟赛 解码
题解:1.已知n , 计算pq = n题目中有条件q−p≤λ≤3e5q-p \leq \lambda \leq 3e5q−p≤λ≤3e5于是假设q=p+yq = p + yq=p+y有pq=p(p+y)=npq = p(p+y) = npq=p(p+y)=np=−y+y2+4n2p = \frac {-y+\sqrt{y^2 + 4n}}2p=2−y+y2+4n令t=y2t = \frac y2t=2y则有p=−t+t2+np = -t + \sqrt{t^2 +n}p=−t+t2+..原创 2020-06-03 14:52:30 · 256 阅读 · 0 评论 -
NOI 2018 屠龙勇士(exgcd,excrt)
题目对于方程ax≡b(modp)ax \equiv b \pmod pax≡b(modp)记gcd(a,p)=g\gcd(a,p) = ggcd(a,p)=g则求出ax≡g(modp)ax \equiv g \pmod pax≡g(modp)的一组特解x0x_0x0后。若b mod g≠0b \bmod g \neq 0bmodg=0则无解。否则原方程等价于x≡x0bg(modpg)x \equiv \frac {x_0b}g \pmod {\frac pg}x≡gx0b(modgp原创 2020-05-30 16:55:39 · 145 阅读 · 0 评论 -
求和(CRT,推式子)
嗯所以F(x)=∑i=0aixix2+2xF(x) = \frac {\sum_{i=0} a_ix^i}{x^2+2x}F(x)=x2+2x∑i=0aixi可以发现ai=(n+2i)a_i = \binom {n+2}iai=(in+2)所以ai=bi−2+2bi−1a_i = b_{i-2} + 2b_{i-1}ai=bi−2+2bi−1通过这个式子从小到大,b0=a12b_0 = \frac {a_1}2b0=2a1,就可以通过aiO(m)a_iO(m)aiO(m...原创 2020-05-22 21:51:04 · 450 阅读 · 0 评论 -
UOJ #33. 【UR #2】树上GCD
题目先求得GCD是iii的倍数的点对数再反演。用长链剖分求出子树内各个深度的节点个数,然后在合并子树的时候统计答案。先求出深度小的子树vvv的每个iii的倍数的点数,再O(maxdepv)O(maxdep_v)O(maxdepv)枚举iii,在之前的子树中求出iii的倍数的点数,然后乘起来即可。在之前的子树中可以如果i>Si>Si>S就暴力,i<Si<Si&...原创 2020-04-28 14:51:14 · 378 阅读 · 0 评论 -
快速数论变换(NTT)
其实对于看了FFT的人来说,也没有什么好讲的。对于没有看过FFT的人来说,讲的内容和FFT也没什么两样。所以就直接上板子吧。#include<bits/stdc++.h>#define maxn 3000005#define mod 998244353#define rep(i,j,k) for(int i=(j);i<=(k);i++)#define per(i,...原创 2019-12-20 21:07:17 · 482 阅读 · 0 评论 -
Comet OJ 序列(分解质因数卡常+平衡复杂度(分块))
题面首先考虑把分解质因数的复杂度从O(x+σ0(x))O(\sqrt x+\sigma_0(x))O(x+σ0(x))降低。可以写PollardRhoPollard_RhoPollardRho但是没必要。把x\sqrt xx以下的质因数预处理即可O(xlnx+σ0(x))O(\frac {\sqrt x}{\ln x} + \sigma_0(x))O(lnxx+σ0(x))...原创 2019-12-05 17:35:30 · 232 阅读 · 0 评论 -
除数函数的较精确渐进上界
https://blog.csdn.net/VFleaKing/article/details/88809335我也很想说我那些题是怎么AAA的,怎么TTT的。σ0(n)=O(n1.066lnlnn)\sigma_0(n) = O(n^{\frac {1.066}{\ln\ln n}})σ0(n)=O(nlnlnn1.066)就找这个算就行了,误差挺小,手算了几组发现不超过50%50...转载 2019-11-14 19:19:46 · 535 阅读 · 0 评论 -
LG P5655 基础数论函数练习题(GCD)
题目题解:考虑如何求nnn个数的lcmlcmlcm,可以求出前n−1n-1n−1个数的lcm=xlcm = xlcm=x,再和an=ya_n =yan=y求lcm=xygcd(x,y)lcm = \frac {xy}{gcd(x,y)}lcm=gcd(x,y)xy然后就可以python骗到50分了xygcd(x,y)=angcd(x,y)x\frac {xy}{\gcd(x,y)}...原创 2019-11-14 11:59:20 · 255 阅读 · 1 评论 -
反质数
n<=1e18n<=1e18n<=1e18n<=1e200n<=1e200n<=1e200是不是很简单啊转载 2019-11-05 13:33:52 · 125 阅读 · 0 评论 -
LG P5605 小A与两位神仙(原根)
判断对于给出的m=pq(p is prime),(x,m)=1,(y,m)=1m=p^q(p \ is \ prime),(x,m)=1,(y,m)=1m=pq(p is prime),(x,m)=1,(y,m)=1,是否存在xa≡y(modm)x^a \equiv y \pmod mxa≡y(modm)算xxx和yyy的阶f()f()f():xa≡1(...原创 2019-11-02 17:03:38 · 141 阅读 · 0 评论 -
Codeforces 364D Ghd(随机化)
题目因为每个数字有12\frac 1221的几率在最优解中,所以我们随机一个数aia_iai并假定它在最优解中,然后对于它的因子判断是否是答案。随机kkk次的期望得分是100∗[1−(12)k]100 * [1 - (\frac 12)^k]100∗[1−(21)k]AC Code\rm \color{silver} AC \ CodeAC Code#includ...原创 2019-10-27 15:36:15 · 230 阅读 · 0 评论 -
BZOJ 2219 数论之神
在ACM_DIY群中,有一位叫做“傻崽”的同学由于在数论方面造诣很高,被称为数轮之神!对于任何数论问题,他都能瞬间秒杀! 一天他在群里面问了一个神题:对于给定的333个非负整数 A,B,KA,B,KA,B,K 求出满足(1)XA=B(mod2∗K+1)(1) X^A= B(mod 2*K + 1)(1)XA=B(mod2∗K+1)(2)X(2) X(2)X在范围[0,2K][0, 2K][0,...原创 2019-10-18 13:29:58 · 198 阅读 · 0 评论 -
POJ 1845 Sumdiv 二分+因式分解
Sumdiv Description Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S modulo 9901 (the rest of the division of S by 9901). Input The only lin原创 2017-02-26 00:05:11 · 243 阅读 · 0 评论 -
质因数分解
#include<cstdio>#include<vector>#define F first#define S secondusing namespace std;vector<pair<int,int> >prime;int main(){ long long n; scanf("%lld",&n); int ...原创 2017-10-23 13:35:06 · 421 阅读 · 0 评论 -
欧拉线性筛质数(线性)
#include<cstdio>#include<algorithm>#include<vector>#define maxn 10000005using namespace std;long long n;int siz;bool vis[maxn]={};vector<int>prime;int main(){ scan...原创 2017-10-23 13:47:20 · 174 阅读 · 0 评论 -
筛法求欧拉函数(线性)
#include#include#include#define maxn 10000005using namespace std;long long n,phi[maxn];int siz;bool vis[maxn];vectorprime;int main(){ scanf("%lld",&n); phi[1]=1; for(int i=2;i<=n;i++原创 2017-10-23 14:03:02 · 208 阅读 · 0 评论 -
矩阵运算
#include<cstdio> #include<cstring> #include<iostream>#include<cmath>#include<algorithm> #define mod 1000000007using namespace std; struct Mat{ int n,m...原创 2017-10-26 14:10:51 · 261 阅读 · 0 评论 -
质数判定(miller-rabin)
#include<cstdio>#include<cstring>#include<cctype>#include<stdlib.h>#include<algorithm>#define LL long longusing namespace std; LL mul(LL a,LL b,LL c){ return ((a...原创 2017-10-24 14:07:23 · 251 阅读 · 0 评论 -
求最小素因子(pollard-rho)
#include<cstdio>#include<cstring>//#include<ctime>#include<algorithm>#define LL long longusing namespace std;inline LL mul(LL a,LL b,LL c){return ((a * b - (LL)((long ...原创 2018-06-23 16:40:26 · 1333 阅读 · 0 评论 -
倍增求快速幂,乘法,O(1) long long 乘法
#include<cstdio>#include<algorithm>#include<stdlib.h>#include<climits>#include<cstring>#include<ctime>#define MAXN LONG_LONG_MAX>>1using namespace std...原创 2017-10-24 14:09:02 · 1196 阅读 · 0 评论 -
gcd和lcm
#include#include#includeusing namespace std;long long gcd(int a,int b){ return !b?a:gcd(b,a%b);}int main(){ long long a,b; scanf("%lld%lld",&a,&b); long long tmp=gcd(a,b); printf("%lld %l原创 2017-10-24 14:10:24 · 236 阅读 · 0 评论 -
扩展gcd
void exgcd(long long a,long long b,long long &gcd,long long &x,long long &y){ if(!b) gcd=a,x=1,y=0; else exgcd(b,a%b,gcd,y,x), y-=a/b*x; }bool equation...原创 2017-10-24 14:11:30 · 297 阅读 · 0 评论 -
康托展开式
#include<cstdio> #include<algorithm> #include<vector> using namespace std; int fac[2505] = {1, 1 ,2 ,6 ,24 ,120 ,720, 5040, 40320 ,362880},siz; int cantor(vector<int...原创 2017-10-24 14:14:02 · 227 阅读 · 0 评论 -
n的全排列
#include#includeusing namespace std;int n,vis[11],ans[11];void dfs(int x){ if(x==n) { for(int i=0;i<n;i++) printf("%d",ans[i]); printf("\n"); return; } for(int i=1;i<=n;i++) if(!原创 2017-10-24 19:27:05 · 262 阅读 · 0 评论 -
有重复元素的全排列
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char a[11],ans[11];int vis[11],sum,num[11];bool check(int x,int len){ for(int i=1;i<len;i++) if(...原创 2017-10-24 19:29:44 · 957 阅读 · 0 评论 -
中国剩余定理
#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace std;int n,m;vector<int>a,b;void exgcd(long long a,long long b,long long...原创 2017-10-24 19:25:45 · 157 阅读 · 0 评论 -
枚举一定条件的子集
#include#include#define maxn 100000using namespace std;int inv[maxn];void solve(int state){ for(int j=state;j;j-=j&-j) printf("%d\n",j);}int main(){ solve(2012); }原创 2017-10-25 14:07:48 · 205 阅读 · 0 评论 -
stirling数(第一类、第二类)
#include<cstdio>#include<algorithm>#include<climits>#include<cstring>#define maxn 30using namespace std;int mod=INT_MAX;long long s[maxn][maxn];//存放Stirling数 voi...原创 2017-10-26 13:55:37 · 283 阅读 · 0 评论 -
求区间乘法逆元
#include<cstdio>#include<algorithm>#define maxn 100000using namespace std;int inv[maxn];void solve(int n){//n为质数 inv[0]=inv[1]=1; for(int i=2;i<n;i++) inv[i]=(n-n/i)*inv[n%i]...原创 2017-10-25 13:57:50 · 211 阅读 · 0 评论 -
组合数
#include<cstdio>#define min(a,b) a>b?b:along long c,n,m;int main(){ while(~scanf("%lld%lld",&n,&m)){ if(n==0) return 0; m=min(m,n-m); c=1; for(long long i=n;i>n-m;i--...原创 2017-10-24 19:30:51 · 265 阅读 · 0 评论 -
雅礼集训 1.2 取石子游戏
取石子(stone)【题目描述】有 n 堆石子,第 i 堆有 xi 个。Alice 和 Bob 轮流取石子(先后手未定),Alice 每次从一堆中取走 a 个,Bob每次从一堆中取走 b 个,无法操作者输。不难发现只会有四种情况:Alice 必胜;Bob 必胜;先手必胜;后手必胜。你需要选定若干堆石子(共有 2^n 种方案),Alice 和 Bob 只能在你选出的堆中取,问以上四种情况对应的方案数...原创 2018-01-17 16:10:17 · 1837 阅读 · 0 评论 -
高斯消元
#include#include#include#include#include#define maxn 105using namespace std;int n;double a[maxn][maxn];double x[maxn];int main(){ scanf("%d",&n); for(int i=0;i<n;i++) for(int j=0;j<=原创 2018-01-09 09:30:07 · 144 阅读 · 0 评论 -
杜教筛——51Nod 1239 欧拉函数之和
神奇题目,话说是WC2018冬眠营的加群密码(1-100*群号的phi和%1000000007)然后我就了解了一下,其实就是利用了一些积性函数的性质,减少了一些不必要的运算。ACcode:还要Hash+预处理5000000以下phi前缀和,恶心另外,分块优化时也要用long long,2833855836死循环,1833855836就秒出,当时竟然没看出来是炸int了最重要...原创 2018-01-17 21:45:23 · 228 阅读 · 0 评论 -
送你一个DAG
1 送你一个DAG (xmasdag.cpp/in/out, 1s, 512MB)1.1 Description送你一个n 个点m 条边的DAG 和参数k, 定义一条经过l 条边的路径的权值为lk.对于i = 1:::n, 求出所有1 到i 的路径的权值之和, 对998244353 取模.1.2 Input Format第一行三个整数n; m; k, 分别表示DAG 的点数, 边数和参数.接下来m...原创 2018-01-19 17:40:20 · 789 阅读 · 0 评论 -
省选模拟赛Day4T3迂回
Problem Problem Problem Problem Problem Problem Problem Problem 3 迂回 (tour)(tour)(tour)(tour)(tour)(tour)【题目描述】 【题目描述】给定一有向图,边长均为 1,求 长度 小于 k的环个数 mod m 。保证 有向图中 无自环 (即 g[i,i]='N') 。什么样的环属于不同 的解, 详见样例解...原创 2018-03-07 17:02:43 · 319 阅读 · 0 评论 -
Divisibility Rules CodeForces - 180B 神奇代码解读
B. Divisibility Rulestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputVasya studies divisibility rules at school. Here are some of them:Divisibility...原创 2018-02-27 19:31:30 · 847 阅读 · 0 评论 -
NTT任意模数模板(+O(1)快速乘)
NTT任意模数的方法其实有点取巧。两个数列每个有n个数,每个数的大小最多是10^9。如果没有模数,那么卷积过后每个位置的答案一定小于10^9*10^9*n,差不多是10^24左右那么就有一个神奇的做法,选3个乘积大于10^24的NTT模数,分别做一次,得到每个位上模意义下的答案,然后用中国剩余定理得到模上三个质数乘积的答案。因为答案显然小于三个质数乘积,那么模上三个质数乘积的答案就是这个数应该的值...原创 2018-03-07 22:38:09 · 3144 阅读 · 0 评论 -
省选模拟赛Day5T1 致命漏洞
致命漏洞 【问题描述】 魔法学家Rutherford.D.Imbalance最近发表了一个生成伪随机序列的方法:B_0=1B_(n+1)=2B_n ,2B_n<2^TB_(n+1)=(2B_n xor X) mod 2^T ,2B_n>=2^T其中X和T给定。他使用这个方法来构造他研制的式神的神经指令加密系统,可是作为Synophia大陆稀有的以研究数学...原创 2018-03-08 16:21:43 · 353 阅读 · 0 评论