合集-数论

摘要:原题链接 题解 1.异或是01变1,11变0,或是01变1,11变1,所以或的越多(即分的组越多),结果越大 2.我们令x=x+1,这样小于等于x的 问题就变成了小于x 的问题,这里我们采用逼近答案的方法。 3.对于某一位而言,如果有奇数个元素在这一位上是1,那么不管怎么分,最后的结果肯定是1,如果 阅读全文
posted @ 2024-03-27 21:37 纯粹的 阅读(45) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 然后就变成了求解同余方程 code #define ll long long #include<bits/stdc++.h> const ll mod=19260817; using namespace std; ll x,y; ll c; ll a,b; inline void r 阅读全文
posted @ 2024-04-04 18:38 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 一个细节坑我好久 code #include<bits/stdc++.h> #define ll long long using namespace std; ll f[15][15]={0};//从最高位第i位数字为j时的数字里有多少windy数 ll solve(ll now) 阅读全文
posted @ 2024-04-06 19:58 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 分解n的质因子,如果为奇数就补一个 由于大于 n 的质因子最多不超过一个,所以我们筛小于 1e6 的质数 code #include<bits/stdc++.h> #define ll long long using namespace std; vec 阅读全文
posted @ 2024-05-08 12:03 纯粹的 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 发现一串数字的lcm一定大于等于这一串数字的最大值,所以如果整个数组的lcm大于 amax ,直接输出n 否则,注意这里的思维,否则,剩余数字组成的lcm一定小于等于 amax 且是 amax 的因子 code #include<bits/s 阅读全文
posted @ 2024-05-28 17:19 纯粹的 阅读(57) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 先不考虑k的限制,而是考虑对于任意一个数,存不存在一个k使得题目所给等式成立 当 n·k 没有进位时,等式一定成立 (赛时也许想到这就够了) 假如有进位呢? 对于任何一个位数大于1的数,必有 D(n)<n (想想十进制是怎么表示数的) 而对于位数为1的数,有 阅读全文
posted @ 2024-06-13 19:58 纯粹的 阅读(120) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.坐标i,j中,一定有一个值为n-1 2.所以另外一个数就是n-1在二进制表示下0的位置变成1,1的位置变成0的数 3.如何找到最大值?答:自己和自己或找出最大的 4.如何找到另外一个数?答:找出和最大值或最大的,再找出这些数中最小的 code #include<bits/stdc 阅读全文
posted @ 2024-06-17 18:14 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.每一个1对答案的贡献为其前面0的个数 2.不难想到二进制,即每遇到 2k 就考虑要不要放一个1 3.但是这样长度会超标,所以我们将较大的 2k 表示成 2k12k2,其中 k1+k2==k,即在 0 的个数为 \(2^{k 阅读全文
posted @ 2024-06-18 14:18 纯粹的 阅读(30) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 ai1·2ki1ai·2ki kilog2(ai1)log2(ai)+ki1 这里log2不能减,要在里面除,太坑了 code #include<bits/stdc++.h> #defi 阅读全文
posted @ 2024-06-29 17:07 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要:定理:aφ(n)1(mod n) 首先,我们需要了解一些前提条件: n 是一个正整数 a 是与 n 互质的整数 φ(n) 是欧拉函数,表示小于 n 且与 n 互质的正整数的个数 考虑集合 \(S = \{x_1, x_2, .. 阅读全文
posted @ 2024-07-08 00:42 纯粹的 阅读(44) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 gcd(a+x,m)=gcd((a+x)mod m,m) 由于 x[0,m1],所以 (a+x)mod m 一定能遍历完 [0,m1] 里的所有数 所以 gcd(a+x,m) 等价于 gcd(x,m) 接下来, 阅读全文
posted @ 2024-07-10 14:24 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.如果没有不能表示出 k 的限制,那么数组由一众二次方构成 2.对于小于 k 的数,考虑 k 的最高位 i 由于 [0,i1] 最多为 2i1 所以可以考虑添加一个 k2i 来表示完 [1,k1] 内所有的 阅读全文
posted @ 2024-07-10 22:48 纯粹的 阅读(14) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 令 g=gcd(i,j)i=t1g,j=t2g 所以原题等价于求 iprimegcd(x,y)==1,x[1,n/i],y[1,n/i] 也就是对于每个素数 i,求 [1,n/i] 内有几 阅读全文
posted @ 2024-07-11 13:35 纯粹的 阅读(6) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 由于答案之和最小的两个数有关,所以我们可以把数组排序 然后遍历数组,对于第 i 个数,遍历其所有因子 k,统计 i 前面有多少数与 a[i]gcd=k 实施 预处理所有数的因子,然后从大到小遍历,时间复杂度 O(nlogn2) 阅读全文
posted @ 2024-07-11 15:53 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.由于是除二操作,所以最后的平均数一定能表示成 k112i1+...+kt12it 的形式 2.最小的 12i 由于没有往下再分,所以数量一定是偶数,把他们的数量除二 阅读全文
posted @ 2024-07-18 09:29 纯粹的 阅读(4) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 易得当区间异或和不为完全平方数的时候合法 朴素做法: 遍历所有区间,看看异或和是不是完全平方数 优化: 异或是可以交换运算顺序的,如果区间 [l,r] 异或和为完全平方数,那么代表 pre[r]pre[l1]==k 其中k为完全平方数 也就是说,\( 阅读全文
posted @ 2024-07-31 13:11 纯粹的 阅读(4) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 假如 b=2,则有 n2 个这样的数 假如 b=3,则有 n3 个这样的数 所以总共有 k=2log2(n)k 个这样的数 考虑去重 由于 \(\sqrt[3]{n}\le 阅读全文
posted @ 2024-08-08 16:57 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 多想几种暴力 1.遍历所有数对: O(n2) 2.求有多少数对其乘积为平方数 求有多少平方数能被数对乘积: O(n2) 3.如果两个数的乘积为平方数,代表他们的质因数,要么都是奇数,要么都是偶数 : O(?) 4.如果 \(a \times 阅读全文
posted @ 2024-08-11 22:53 纯粹的 阅读(13) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示