12 2020 档案

摘要:传送门 找到$n$的两个约数$p_1, p_2$,使得$gcd(p_1+p_2, n) = 1$ gcd的一些性质 \(gcd(a, b) = gcd(a, b - a) = gcd(b, a % b)\) 若$gcd(a, b) = 1$,则$gcd(a, b) = gcd(a + b, a * 阅读全文
posted @ 2020-12-25 17:22 Emcikem 阅读(152) 评论(0) 推荐(0)
摘要:首先可以知道对于和,与操作,他不会改变两个数字的二进制中1的总个数 比如 | 第一位 | 1 | 0 | 0 | | : : | :--: | :--: | :--: | | 第二位 | 1 | 1 | 0 | | 和操作 | 1 | 0 | 0 | | 与操作 | 1 | 1 | 0 | 可以发现 阅读全文
posted @ 2020-12-25 13:55 Emcikem 阅读(106) 评论(0) 推荐(0)
摘要:传送门 类似于qq的,有人给你发消息,那么他就会变成第一个。最后让你求每个人的最小排名和最大排名 首先,对于发过消息的人,最小排名是1,没有发过消息的,最小排名就是他的初始位置$i$ 对于没有发过消息的,那么他的最大排名就是看所有发过消息的人里面,有多少个人编号大于自己,那么自己就往后多少名 对于发 阅读全文
posted @ 2020-12-11 12:18 Emcikem 阅读(71) 评论(0) 推荐(0)
摘要:传送门 给出两个数组$a,b$,需要对每一个$i$进行操作,\(ans += a[i]\),如果说$b_i ≠ -1$,那么就把$a[b[i]] += a[i]$ 求出$ans$和操作的下标情况 首先分析一下如果对于所有的$b[i]≠-1$的情况,如果$a[b[i]]$加上了$a[i]$,那么$a[ 阅读全文
posted @ 2020-12-10 20:19 Emcikem 阅读(89) 评论(0) 推荐(0)
摘要:求出在$[1, b]$里有多少个数字的$F(i) \leq F(a)$ 首先算出$F(a)$的值,然后套一下数位dp板子即可 同时记录其权值变化,对于每一个base就是$2^$ 但是选择记录当前权值然后最后比较是否小于等于$F(a)$是不行的 因为记忆化搜索就会记录有多少个权值是小于第一个$F(a) 阅读全文
posted @ 2020-12-09 12:35 Emcikem 阅读(67) 评论(0) 推荐(0)
摘要:求出$\sum_^n [gcd(n, i) == 1] i ^ 4$ 即求出$[1,n]$里面与$n$互质的数的四次方和 考虑互质,想到唯一分解求出n的所有质因子,然后利用这些质因子容斥求出所有不符合的数字的四次方和 然后求出所有的和,减去不符合的值就是答案。 \[ \sum_{i=1}^{n} i 阅读全文
posted @ 2020-12-08 16:12 Emcikem 阅读(69) 评论(0) 推荐(0)
摘要:传送门 就是给你n个数字,m次查询,查询gcd为$a_i$的区间有几个 因为是gcd,并且是区间查询,那么考虑$ST$表进行$O(1)$查询,而且,在$ST$表里面,gcd是不递增的序列,那么就可以进行二分查找 那么再去考虑对于每一个左区间,查询它的所有右区间的gcd值,考虑到,前一个gcd值肯定是 阅读全文
posted @ 2020-12-07 17:07 Emcikem 阅读(84) 评论(0) 推荐(0)
摘要:传送门 $1e9$的数据,让你找到 数字里包含13 且是13的倍数。 包含13子串很好找,就是普通的数位dp模板,$pre == 1 \ and \ i == 3$就行了 数字是13的倍数,本来可以记录一下当前的数字为什么,最后再判断一下就行了,但是为了记忆话搜索,就就必须修改策略 考虑每次都取模, 阅读全文
posted @ 2020-12-04 10:15 Emcikem 阅读(73) 评论(0) 推荐(0)