随笔分类 - 数论
摘要:Link 这是一个需要欧拉反演的题目 首先,可以知道只和数字之间的大小有关,数列的顺序无关,那么就可以首先排一个序方便解决该问题。 根据欧拉函数的性质,知道\(n=\sum_{d|n}\phi{(n)}\) 那么我们每次先确定中间的数\(a_j\),然后根据公式,得他它得贡献是\(\sum_{i=1
阅读全文
摘要:对于不定方程\(ax+by=c\)有正数解的充分必要条件是\(c|gcd(a,b)\),证明请看裴蜀定理 那么显然的,我们只要能解出方程\(ax+by=gcd(a,b)\)然后把解\(\times \frac{c}{gcd(a,b)}\)即可 如何解这个新的方程呢?我们知道\(gcd(a,b)\),
阅读全文
摘要:Link 此题目可以从两个方向考虑,正着和倒着,倒着考虑比较容易,首先把所有的数放到一块,如果是'<'或者'>',就是去掉最左边或者最右边的数,这样显然只有一种可能,答案不变。 如果是'?',那么显然可以去掉中间的任意一个,所以答案就是\(\times l-2\),那么对于\(s_n-i\)位置的\
阅读全文
摘要:定义平衡\(2k+1\)进制数码为\(-k,-(k-1),,,0,,,k-1,k\),请求出一个十进制数的\(2k+1\)进制表示。 对于该问题,解决的思路是首先算出普通的\(2k+1\)进制下的表示,然后分别对每一位进行考虑. 1:这一位的数属于 \(0-k\) 不用管 2:这一位的数属于\(k+
阅读全文
摘要:[link](https://codeforces.com/contest/1855/problem/C1) 像这种构造题可以先分类讨论一波 比如说全是正数或者全是负数,那么显然的就是可以用前缀和和后缀和来解决。 而如果有正有负呢?可以注意到的是数字非常小,而$2^5=32>20$了,那么我们就可以
阅读全文
摘要:[link](https://codeforces.com/contest/1855/problem/B) 需要思考一下 如果这个题能做,那么肯定有一种比较可行的做法。 如果$[l,r]$是可行的,那么就意味着$[1,r-l+1]$是可行的 这是显然的,显然后者的每一个数在前者中必然有对应的倍数,所
阅读全文
摘要:Jisoo 大家都知道怎样单独求某一个东西的欧拉函数值$\Psi(m)=m*\prod_{prime_i|m}(\frac{prime-1}{prime})$ 其中右边的东西是用容斥定理搞出来的。那么我们是否也能够用容斥定理处理这个问题? 显然那个$m$是需要约去的,并且我们可以快速求出$\psi(
阅读全文
摘要:Jisoo 大家都知道,对于两个数 $a,b$的$lcm$,只要求去每个质数因数的较大的幂乘起来就行了。然后卡卡时 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #inc
阅读全文
摘要:Jisoo 众所周知,这个式子就是$\sum_{i=1}^n(k-i*\lfloor\frac{k}{i}\rfloor)$ 也就是$nk-\sum_{i-1}^n(i\lfloor\frac{k}{i}\rfloor)$ 右边的东西用数论分块+等差数列搞一下就可以了 数论分块的每一块的右边界是$\
阅读全文
摘要:Jinnie 显然还是一个线性基的问题,那么很显然要用线性基 对于一堆石头$S_1,S_2,S_3 $,如果加入X会令异或值为0的话,那么显然我们可以拿出一块再把x放进去 这样只需要线性基检查能不能放,从大到小放就行。 这告知了我们求线性基可以考虑改变顺序 #include<bits/stdc++.
阅读全文
摘要:Jinnie 显然是一个线性基的问题,那么很显然要用线性基 想要知道所有的方案数,线性基的性质就是用其中的元素$xor$ 出来的元素保证互不相等 这样的话只要知道线性基内元素的数量就可以了 #include<bits/stdc++.h> #define int long long using nam
阅读全文
摘要:JIsoo 期望得分要dp,然后期望长度是有关系的 那就一块dp #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> using nam
阅读全文
摘要:Jennie k是给定的 把m和n扔到一个坐标系里 成了二维的了,我们又都知道$Cm_n=c_{n-1}{m-1}+c_{n-1}^m$ 然后求和那个奇特的范围 这就是个二维的前缀和啊 #include<iostream> #include<cstdio> #include<algorithm> #
阅读全文
摘要:Jisoo 首先可以意识到,对于这个数组,他的异或和一定不会超过数值和 所以说 \(u>v\) 直接挂了 然后意识到,区间和的奇偶性和异或和是一样的,(看第一位),这样$u!=v$也不行 剩下的呢,可以直接构造 \(u,\frac{v-u}{2},\frac{v-u}{2}\)(已经保证了分子为偶数
阅读全文
摘要:Lisa 这个序列只需要考虑最大值和次大值的数量 如果最大值数量大于1,那么所有排列都可以,输出全排列 如果最大值为1且不等于次大值加1,那么不可能存在 如果最大值为1且等于次大值加1,那么只要最大值后面有至少一个次大值就可行 然后就是组合数学算一算 #include<iostream> #incl
阅读全文
摘要:P3812 【模板】线性基 这是一道板子题 #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll p[100]; ll ans; ll x; ll n; v
阅读全文
摘要:Jennie \(c^n_m=c^{n/p}_{m/p}*{c^{n\%p}_{m\%p}}\) 然后套上去就行了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #d
阅读全文
摘要:Jennie 结合一下上一个题的思想,先确定一下这个最大公因数可以是谁--n的因数, 所以说肯定要对n的每一个因数的倍数下手,其中去除乘起来为n的哪个外,我们要注意一下剩下的倍数要跟他互质 ‘这不就和上个题一样了 #include<iostream> #include<cstdio> #includ
阅读全文
摘要:Jennie 素数不多,我们考虑素数就可以了 对于素数来说,能以他为gcd,那么肯定时它的倍数,且$gcd(\frac{i}{prime},\frac{j}{prime})=1$,那么我们先求出$1-n$有多少个prime的倍数,然后取出两个互质的倍数,就是一个答案 这不就时$\phi()$的干的好
阅读全文
摘要:Jennie 首先我们要知道欧拉定理 \(a^b\equiv^{b\%\phi(p)+\phi(p)}\quad b>=p\) \(a^b\equiv^{b\%\phi(p)} \quad b<p\) 然后对于这个式子,我们可以改造成 \(2^{2^{2^{2^{...}}}\%\phi(p)+\p
阅读全文