数论
陈末iiiiiiiiiiii
Retired
展开
-
Codeforces Round #697 (Div. 3) G 线性dp 调和级数 数论
题目Polycarp 在街上发现了一个包含 n 个元素的数组。Polycarp 发明了他的阵列美感标准。如果每对不同的索引 i≠j 必须满足以下条件中的至少一个,他就称数组为美数组:ai 可被 aj 整除;或 aj 可被 ai 整除。例如,如果:n=5 and a=[7,9,3,14,63],则a数组不美观(对于i=4 and j=2,以上条件都不满足);n=3 且 a=[2,14,42],则 a 数组很漂亮;n=4 且 a=[45,9,3,18],则 a 数组不美观(对于 i=1 和 j=原创 2022-05-05 17:25:11 · 820 阅读 · 0 评论 -
牛客xb赛48 F 孤独的树 树形dp 处理森林 筛法
题目传送门题解思路因为N最大就是1e5,所以对与每个权值他最多只能有6个不同的质因子。我们每次只能去除一个质因子,所以,如果要去除这个点的这种质因子就多次去除这个即可。我们从最大的质因子不断往小删。这样就能O1获取我们此时到底要删谁。有相同质因子的点可以构成森林(多个连通块),我们对每个连通块,每次都处理掉一种质因子,这样就能保证复杂度在Nlog(N)。对于每个连通块处理同种质因子有树形dp来计算最小的次数,最后再累加。dp[i][0] 表示以i为根节点的子树,根节点不进行删除操作使得满足原创 2022-04-24 15:19:08 · 1451 阅读 · 0 评论 -
4319. 合适数对 数论 因式分解 算术基本定理 同余
题目传送门题解思路由算术基本定理,可以将每个ai拆分成若干个质数的幂次的乘积。如果想构成x的k次方,两个数拆分的每个质数的幂次也必须满足相加余k为0。所以,问题变成了,对这个数我们去找之前可以和他的每个质数的幂次相加余k为0的数的数量。这好像是个求有几个相同的多元组问题,但是,又有算术基本定理逆向,这样我们可以直接确定我们找的这个多元组对于的数是多少,直接开个map映射即可。(这一步,没想出来)对每个幂次,我们只关心模k的余数。AC代码#include <bits/stdc++.h原创 2022-03-29 16:49:44 · 1301 阅读 · 0 评论 -
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)F 三分 几何分布求期望
题目传送门题解思路之前只听说过三分,这是第一次写三分的题目,没想到是在区域赛真题上。根据期望公式二阶导推断出是凹函数,三分求凹点。铜牌题就几十行。公式以及三分算法参考这个博客AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing namespace std;原创 2022-03-13 15:16:44 · 246 阅读 · 0 评论 -
Codeforces Round #769 (Div. 2) D 区间gcd st表 二分 贪心
题目长度从1到n的每个区间都需要求最小的操作数。题解思路首先区间gcd(l,r)定住一边的话是具有单调性的。定住l增大r,因为出来的gcd肯定是不增的,也就是降序。其次,利用st表,可以O1得出某段区间的gcd。之前的st表题目为什么可以用呢?因为只要我们的gcd能正确包括整个范围,不论有些地方重复覆盖了,也一样可以得出正确的gcd。这和最最大值是一个道理。因为答案固定了1到n的区间,所以我们定住右端点r。往有可能的地方进行二分搜索出有可能等于区间大小的部分。如果等于区间大小那么我们可原创 2022-02-24 20:34:56 · 123 阅读 · 0 评论 -
Codeforces Round #766 (Div. 2) D 数论 调和级数 log
题目你有一个数组 a1,a2,…,an 由 n 个不同的整数组成。 您可以对其执行以下操作:从数组 ai 和 aj (i≠j) 中选择两个元素,使得数组中不存在 gcd(ai,aj),并将 gcd(ai,aj) 添加到数组的末尾。 这里 gcd(x,y) 表示整数 x 和 y 的最大公约数 (GCD)。注意每次操作后数组都会发生变化,后续的操作都是在新数组上进行的。您可以对数组执行操作的最大次数是多少?输入第一行由一个整数 n (2≤n≤106) 组成。第二行由 n 个整数 a1,a2,…,a原创 2022-02-22 20:29:00 · 128 阅读 · 0 评论 -
Educational Codeforces Round 89 (Rated for Div. 2) D gcd拓展公式 卡longlong除法
题目给你N个数对于每个数Ai问你能否给出一个答案,Ai是否存在两个因子d1 > 1 d2 > 1满足gcd(d1+d2,Ai) == 1N <= 5e5题解思路引入一个定理这题就很简单了,直接枚举比他小的质数,把这个质数拿从出去,除出另一边d2,然后判断是否为1即可。d1肯定只有1个质数组成,而d2就由其他质数组成。他们肯定是互质的,所以满足上面的式子。这题在用质数试除的时候被卡longlong除了,建议少用longlong除。AC代码longlong乘#i原创 2021-12-24 17:01:59 · 355 阅读 · 0 评论 -
Educational Codeforces Round 119 (Rated for Div. 2) C 组合数学 构造字符串 字典序 爆longlong小技巧
题目给你一个长度为 n 只含a和*的字符串。其中 * 可以变成 0 到 k 长度的只含 b 的字符串 。在原字符串可以改变的所有情况中求出字典序第x小的字符串。n < 2000k < 2000x < 1e18题解思路肯定是从后面的星来往前加b来维持字典序最小。我们考虑每两个a之间的*能在字典序的多少位。并且字典序还受到之前的数的影响。可以在首位末位加入a来更好的控制b的数量。即下面这个图的规律。我们使用这个乘法法则构造出每两个a之间位置满位的最大字典序。原创 2021-12-21 19:25:16 · 69 阅读 · 0 评论 -
AtCoder Beginner Contest 232 E 线性DP 组合数学
题目有一个H*M的棋盘,起初小车在x1 , y1 ,小车要到达x2 , y2 。小车每次操作只能到达棋盘中同行或者同列的某个位置。要求计算小车从起点到达终点,并且恰好使用K次操作的方法数。答案对998244353取余。题解思路这种问题可以先想想将行列分开考虑。我们可以根据最后一个不同点来划分,即小车到没到达目标的行或列。以横坐标为例即dp[ i ] [ 0 ] 表示小车走了 i 步 走完后不在 目标的列 ,1 表示在目标的列 的所有合法方案 。根据这个条件 , 很容易得原创 2021-12-20 17:33:45 · 461 阅读 · 2 评论 -
Educational Codeforces Round 41 (Rated for Div. 2) D 计算几何 判断共线 逆向思维
题目二维坐标面上给你N个点,试判断,能否用2条线把N个点都连上。题解思路从结果逆向出发,如果1 和2 且 1 和 3 不共线那么 2 3 必然共线。如果不满足则不可能用2条线连上。思维拉满。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing names原创 2021-12-07 15:41:16 · 405 阅读 · 0 评论 -
牛客xb月赛41 F 构造题 先打表找规律
题目题解思路先对375质因数分解 3 * 5^3 即 3*125 。所以,我们构造的数只要满足能被3和125同时整除即可。能被3整除的数,只需满足每个数位加起来的数是3的倍数即可,这个我们可以先根据有的所有数的总和特判掉。剩下就是125的倍数了。打表发现 125 250 375 500 625 750 875 1000 1125 1250 。貌似只需满足后3位数和前8个有相同的即可(除去前导0)。这样我们只需特判000然后处理前7种即可。先判断有没有那么多数满足结尾,再判断有原创 2021-12-07 11:12:51 · 408 阅读 · 0 评论 -
AtCoder Beginner Contest 230 E 整除分块的结论
题目题解思路由之前的结论只有2根号n个数我们只有让算出每个答案数的左边右边相乘出答案即可。 for (long long i = 1 ; i <= n ;) { long long v = n / i ; //求左边i带来的数 long long r = n / v ; //求右边的数 r = min(r,n) ; //防止越界。 cout << r << " " <<原创 2021-12-06 14:34:19 · 231 阅读 · 0 评论 -
Codeforces Round #757 div.2 C 位运算 计算贡献 子序列异或之和公式
题目定义一个非负整数序列的舒适度为其所有子序列上元素的异或之和。让你知道原序列长度为N,并且给你一些连续片段的位或值。让你求原序列的异或之和。题解思路参考博客考虑每一位对答案的贡献。位d的子序列肯定得选奇数个1才能得出这个值2^d。但是肯定是N个01组成的。我们从1中选奇数个,0中的任意选择不会影响答案。再由参考博客中大佬的证明所以这个位的贡献就是2^d * 2 ^n-1 次方。(只有2的n-1次方的组成能得出他的值)前提是有1这样我们积累有1的每一位即可。大佬用了位或运算来积原创 2021-11-27 10:34:11 · 431 阅读 · 0 评论 -
2021牛客寒假算法基础集训营4 J 数论 gcd 求 大幂次 序列 的gcd 质因数分解
题目题解思路将每个底数质因数分解 ,取每个质因数的最低幂次(乘之前的幂次)即可。最后gcd出底数序列的最大公约数。再将最大公约数分解质因数。通过预处理的每个质因子的幂次运用快速幂相乘即可。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing namespac原创 2021-11-24 21:23:17 · 91 阅读 · 0 评论 -
2021牛客寒假算法基础集训营2 gcd + 贪心
题目题解思路根据题目规律,找出要相同的子串的长度。这里他们一眼出gcd(),我倒是看了很久,还是太菜了。当2*K < N的时候就是另一种情况,因为这个长度他不能拉伸。所以这时候重叠的子串长度就只有N - k 。当知道了重复的区间,我们要让修改的字母数最小,就枚举每个子串的每个位置的众数即可。这是小贪心。参考题解AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#原创 2021-11-16 21:07:27 · 95 阅读 · 0 评论 -
2021牛客寒假算法基础集训营2 整除分块的性质 数论
题目题解思路特判出情况即可。先插个眼。参考文章参考文章AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing namespace std;const int INF = 0x3f3f3f3f;int main(){ ios::sync原创 2021-11-15 22:04:17 · 475 阅读 · 0 评论 -
2021牛客寒假算法基础集训营1 D 并查集 逆元 组合数学 二维网格转一维注意事项
题目题解思路首先探讨二维转一维的思路。将每个点转成横坐标乘N+纵坐标。看起来可以实现,但是这题需要四周的点,这样3 4 就被隐式连接了。所以会Wa。当我们先将N自增1的时候,每个能用上的XY就不会出现上面那种隐式连接了。(小技巧)然后回到这题,当一个1变成0的时候,四周的1也会变成0,即连锁反应。所以我们可以将每个有这种关系的点连通成块。想将所有1变成0必然是按每个连通块中的一个就行。假设有N个连通块,每个连通块有a1 a2…an个点。这样选择的情况就是N!a1a2*a3…*an原创 2021-11-11 09:44:54 · 305 阅读 · 0 评论 -
牛客xb月赛39 G 区间询问优化小技巧 欧拉筛 求区间最小质因子 树状数组求区间总数
题目题解思路1—n 有多少数可以表示为大于等于 K 的质数的乘积也就是 求1-n 有多少个数,这个数的最小质因子大于等于K。欧拉筛就是用数的最小质因子筛这个数为合数的,这样我们可以利用欧拉筛来筛出区间的每个数的最小质因子。这样我们将1-n的每一个数的最小质因子当成树状数组的指针。每多一个就将这个指针下的值++。利用树状数组logn求前缀和的特性,求出比指针K大的区间总和数。但是每次询问的区间大小不同。如果我们每次都清空再加入数,肯定会浪费很多时间复杂度。可以得到一个性质区间变大会影响小区原创 2021-10-26 19:21:06 · 189 阅读 · 0 评论 -
Educational Codeforces Round 115 (Rated for Div. 2) D 容斥定理 组合数学
题目Monocarp 是伯兰州立大学编程团队的教练。他决定为他的团队的培训课程编写问题集。Monocarp 有 n 个他的学生还没有见过的问题。第 i 个问题有一个主题 ai(一个从 1 到 n 的整数)和一个难度 bi(一个从 1 到 n 的整数)。所有的问题都是不同的,即不存在同时具有相同主题和难度的两个任务。Monocarp 决定从 n 个问题中为问题集中选择 3 个问题。问题应至少满足以下两个条件之一(可能同时满足):三道选题的题目都不一样;三道选定题的难度各不相同。您的任务是确定为问题原创 2021-10-11 21:56:01 · 249 阅读 · 0 评论 -
Codeforces Round #747 (Div. 2) C n与n-1一定互质 收敛级数 思维碾压场
题目Theofanis 有一个字符串 s1s2…sn 和一个字符 c。他希望使用最少的操作次数使字符串的所有字符都等于 c。在一次操作中,他可以选择一个数 x (1≤x≤n) 并且对于每个位置 i,其中 i 不能被 x 整除,用 c 替换 si。求使所有字符等于 c 和他应该在操作中使用的 x-s 所需的最少操作次数。输入第一行包含一个整数 t (1≤t≤104)——测试用例的数量。每个测试用例的第一行包含整数 n (3≤n≤3⋅105) 和一个小写拉丁字母 c——字符串 s 的长度和结果字符串原创 2021-10-09 16:18:30 · 171 阅读 · 0 评论 -
1303. 斐波那契前 n 项和 矩阵乘积 矩阵快速幂
题目题解思路On肯定解决不了的 。有关矩阵的乘法参考文章AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#include <map>#include <string>using namespace std;原创 2021-10-06 18:29:55 · 79 阅读 · 0 评论 -
1298. 曹冲养猪 中国剩余定理 扩展欧几里得求逆元
题目题解思路m1 m2 m3 都互质这个定理是构造出来的答案 。如何验证?我们取第一个式子,首先 i = 1 以外的层数肯定可以整除 m1 因为 大Mi 中留下了m1这个因子。 只需考虑 i = 1 时的情况了 t1 是 M1关于 m1余1的逆元所以他们俩相等就相等于 M1/y == 1 mod mi 。这时我们再乘个 a1进去就和一式完全一样了。这题就是直接套用中国剩余定理的板子题,再加上用扩展欧几里得求逆元 。AC代码#include <iostream原创 2021-10-06 15:39:48 · 75 阅读 · 0 评论 -
202. 最幸运的数字 化简 试除法求欧拉函数 欧拉定理 快速幂 快速乘
题目题解思路下面的文章讲的很清楚。关键是对互质条件推出的公式转移 。参考文章AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#include <map>#include <string>using namespa原创 2021-10-06 10:40:46 · 106 阅读 · 0 评论 -
203. 同余方程 扩展欧几里得 线性同余方程
题目题解思路先将同余方程转移ax mod c=b ⟺ ax=cy+b再直接根据拓展欧几里得算法,我们可以得到一组特解,再通过这组特解来推出所有解。下图 通解处 a b 互换 。这里d为1 a 肯定大于 1 ,这样特解就是 附近的正数就是最大的。详解AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include &原创 2021-10-05 17:29:46 · 74 阅读 · 0 评论 -
220. 最大公约数 欧拉函数 公式化简
题目题解思路首先化简成下面这样。对于每个素数P都有一个1 N/P的区间让 a/p 和 b/p,我们只要算出区间内互质数的数对,枚举每个素数求和就是答案。由欧拉函数可以求得1 到 N 中与N互质的数的个数 对其求前缀和 ,就是数对的一半了,这里a b 是可以交换的 。(当 a b 相等 为 p 的时候 就不能了)参考文章AC代码#include <iostream>#include <cstdio>#include <cstring>#inc原创 2021-10-05 16:24:32 · 212 阅读 · 0 评论 -
201. 可见的点 线性筛法求 欧拉函数 1到N中与N互质的数的个数
题目题解思路欧拉函数是小于或等于n的正整数中与n互质的数的数目phi[ 1 ] = 1我们可以在筛法的中间穿插欧拉函数的求法。很显然 在筛法 首先出现的素数们的欧拉函数值肯定是 i - 1 ,它一定对前面出现的数都互质。(因为它能组成的合数还没出现)欧拉筛是用之前出现的素数来筛这个数组合成的合数,当发现是素数是这个数的最小质因子的时候就break。运用这个公式我们能递推出合数的欧拉函数转移方程。下面的题解提供了推导过程。然后回到这题斜率y/x必然互质 ,这样才能保证他们不会出原创 2021-10-05 11:40:58 · 313 阅读 · 0 评论 -
200. Hankson的趣味题 DFS枚举约数 试除法枚举所有质因子和它的次数
题目题解思路x肯定是b1的约数,所以从这里入手(我是想不到)。直接枚举所有约数如果符号上面的条件就可以作为答案。根号D2e3这样的话复杂度大概5e42e3 大概1亿左右,这样是很有可能超时的。时间复杂度已经接近了,只要稍微优化一下就行了。大概在5e3*2e3 1e7筛出质数后。我们直接枚举所有质数,以及它的次数。我们只在D的质因子下枚举。这样直接用dfs暴力枚举出它的约数,约数个数(这一步可以减少大量dfs的次数)不会超过1600的。dfs的次数最多1600,所以可以忽略复杂度。原创 2021-10-04 20:59:02 · 172 阅读 · 0 评论 -
198. 反素数 DFS 暴力搜索 约数定理
题目题解思路在 1 到 N 中 如果 K 被称为反素数 ,那么他约数数量一定是 在 1 到 N 中 最多的 , 而且 他还要尽可能的小,不然就不一定都是小于号了 ,这样才能符号反素数的要求 。很容易想到贪心策略前面的质因子的次数肯定要比后面的多 ,这样数才能尽可能的小 。并且最大的质因子次数必然不超过31,2的30次方就大概10亿多了。而且质因子延展还不会超过第9个素数。这些前置知识感觉都是要记的,写多题目就记住了。这样我们就可以爆搜了 时间复杂度粗略估计这样怎么点从2开始往原创 2021-10-04 18:56:31 · 108 阅读 · 0 评论 -
1294. 樱花 二元等式的解的个数 约数的个数
题目题解思路条件太少,正整数这个性质要把握好。将x y 分离后 可以发现 x y如果都是正整数的话,N!平方必定整除X - N!平方,这样的话,我们只需找出N!平方 有多少个约数就行了,对于每个约数对应一个X,这里没有限制X的大小,所以必然能取到。这样又回到了之前的阶乘分解根据约数定理我们只需对分解出的每个质因子的次数乘2然后+1进行连乘就行了。参考文章AC代码#include <iostream>#include <cstdio>#include <原创 2021-10-04 16:46:27 · 92 阅读 · 0 评论 -
1291. 轻拍牛头 求目标约数的个数 标记 逆向枚举倍数
题目题解思路启发性的思想,很难去分解他们的约数,暴力等于超时。将目标数组的数全部标记。不如反向用约数的倍数表示出这个数。再从1开始往前用约数去倍增出目标数再传递标记。累加的标记就是答案。AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#原创 2021-10-04 15:50:54 · 73 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2) C 按位异或 DFS 分块
题目Bakry 遇到了一个问题,但由于他懒于解决,所以他请求您的帮助。给定一个由 n 个节点组成的树,第 i 个节点为从 1 到 n 的每个 i 分配了值 ai。提醒一下,n 个节点上的树是具有 n-1 条边的连通图。您想从树中删除至少 1 个,但最多 k-1 个边,以便以下条件成立:对于每个连接的组件,计算其中节点值的按位异或。然后,对于所有连接的组件,这些值必须相同。有没有可能达到这个条件?输入每个测试包含多个测试用例。第一行包含测试用例数 t (1≤t≤5⋅104)。测试用例的描述如下。原创 2021-10-04 10:45:12 · 96 阅读 · 0 评论 -
197. 阶乘分解 求大阶乘的质因数个数
题目题解思路一开始想枚举每一个数然后试除出质因子,这样复杂度N根号N 10的9次方 不行的。闫总提供了一个一个在连续乘积中求质因子个数的快速方法。直接除这个质因子,留下了的数就是有这个质因子的数的个数,剩下的继续除就是有2次方的数的个数,以此类推。AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector&g原创 2021-10-03 20:28:12 · 180 阅读 · 0 评论 -
196. 质数距离 筛区间大质数 筛质数
题目题解思路大合数N必然存在一个质因子小于等于根号N,不然怎么组合出他。所以我们只需筛出2到根号R的素数,再用这个区间的素数来筛出区间里的素数。将区间的每个素数减去l来存入数组寻找差值。(类似离散化吧)时间复杂度Nloglogn(因为我用的埃式筛 感觉和欧拉筛差不了多少)约等于OnAC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#incl原创 2021-10-03 19:44:30 · 130 阅读 · 0 评论 -
246. 区间最大公约数 更相减损术 差分数组 线段树
题目题解思路利用更相减损术(如图所示),我们可以让线段树存入原数组差分数组,这样区间的加法就变成了单点的加法,而且两边的gcd只需对一个位置的sum gcd一下,其他的都是可以传递的 。这样的话,这题的其他操作就有点类似245. 你能回答这些问题吗了参考文章AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vec原创 2021-10-02 10:15:34 · 76 阅读 · 0 评论 -
105. 七夕祭 贪心 绝对值不等式 环形纸牌均分问题
题目题解思路行间进行交换 不会导致每列的数值改变,列同理 。 所以我们可以分解两个问题 。行的总值如果不能被行数整除那肯定无法使他们相等。列同理。下面就是 对环形纸牌均分问题。参考下面推出的公式公式递推参考文章以及闫总视频可以得到一个绝对值不等式我们只要求出每个C如何取中位数就可以得到最小费用了。AC代码#include <iostream>#include <cstdio>#include <cstring>#include <qu原创 2021-09-25 20:21:09 · 108 阅读 · 0 评论 -
871. 约数之和 约数定理 秦九韶算法计算多项式
题目题解思路由上一篇的约数定理 可以知道 只需要算出每一项的质因数的指数 再加起来 然后用 约数之和公式就能计算出了 。这里有一个 秦九韶算法计算多项式 是解决这种等比数列求和的另一种方法只需一个while循环这个好像在多项式乘法中用过AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>原创 2021-09-24 17:45:14 · 243 阅读 · 0 评论 -
97. 约数之和 递归分治 约数定理
题目题解思路约数定理以及题解文章定义一个递归函数对每一个等比数列 进行 分治处理每次 操作都一半合并 分治处理类似二分的思想 log nAC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#include <map>#inc原创 2021-09-23 19:52:18 · 94 阅读 · 0 评论 -
90. 64位整数乘法 龟速乘 大数快速加法 类似快速幂 位运算
题目题解思路log级别的运算和快速幂类似 将 b不断分两半 分不了时就加上底数贴上板子AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#include <map>#include <string>using n原创 2021-09-23 16:48:56 · 74 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) B MEX和XOR
题目题解思路要满足MEX的a,序列必须要有0-a-1的a个数。如果从0开始到a-1的^的结果 x 刚好是b,答案就是a。如果x ^ b == a 即 x ^ a == b 。 异或交换等价。因为序列中不能存在a,我们必须凑两个大与a的数来抵消来置换出a。其他情况下,只需凑一个数(必然可以找到)即可得出答案。有关MEX和XOR的定义要记住AC代码#include <iostream>#include <cstdio>#include <cstring原创 2021-09-15 20:55:18 · 180 阅读 · 0 评论 -
AcWing 3815. 最大约数 试除法求质因数 根号N
题目题解思路类似埃式筛的方法,先用试除法筛出因数,一开始筛出的必然是质数,用这个质数将他的次方消耗完,留下的就是其他质数的组合了。留下的N是可能最后一个质数也可能是1。最后一个数要是一次的话,是筛不出他自己的。AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algor原创 2021-09-14 09:10:38 · 120 阅读 · 0 评论