![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 56
scau_sleep(今天写bug了吗?
1.一个退役acmer,老年选手
2. 今天喝水了吗?
3. 会写暴力~比不会写强~比不会写优秀
4.不会三分,喜提铁牌。
5. 失败一次不算什么,胸针为了拯救真由里 和 助手。重来3000多次都可以,那我失败几次,又算什么。(命运石之门)
-------如果说这是命运石之门的意志的话
展开
-
数论(更新中)(杂)
Uva11526本题转载于传送门题意:题目要你求sum【n/i】(from 1 to n)(注意这里是int除法)思路:直接算,肯定超时n最大2^32。所以要想办法优化:n=20时,和式展开为20+10+6+5+4+3+2+2+2+2+1+1+1+1+1+1+1+1+1+1注意到后面相同的数太多,不妨化简下:20+10+6+5+1*(20-10)+2*(10-6)+3...原创 2020-04-14 16:10:38 · 99 阅读 · 0 评论 -
AtCoder Beginner Contest 276 G - Count Sequences 差分
好难阿,组合数学原创 2022-11-06 01:21:00 · 606 阅读 · 0 评论 -
AtCoder Beginner Contest 275 D - Yet Another Recursive Function(记忆化搜索)
记忆化搜索原创 2022-10-30 19:56:16 · 111 阅读 · 0 评论 -
AtCoder Beginner Contest 272 E - Add and Mex(调和级数) (神智不清的一周)
AtCoder Beginner Contest 272 E - Add and Mex(调和级数) (神智不清的一周)调和级数原创 2022-10-08 23:13:32 · 392 阅读 · 0 评论 -
ABC268 F - Best Concatenation (记录下赛时过不了样例的原因)
排序原创 2022-09-10 21:44:56 · 252 阅读 · 0 评论 -
ABC254 F - Rectangle GCD( 数据结构&&gcd)
我们会发现除了第一列以外,其他列的值一样,所以我们可以直接求出后面的gcd。而第一列的gcd也可以快速根据step1维护。询问q次,每次询问一个子矩阵的gcd。弱化下问题:假如是询问q次区间最值?,我们可以快速计算出一行的结果。板子的gcd可能会因为负数wa。原创 2022-09-02 22:01:47 · 281 阅读 · 0 评论 -
Codeforces Round #785 (Div. 2) D. Lost Arithmetic Progression (类似质因分解)
传送门:link题意:给你两个等差数列的:首项,公差,项数。数列BBB和数列CCC给出.要求有多少满足条件的数列AAA数列CCC 是 数列AAA 和 数列BBB的公共项。思路:感觉难度在 [1800,2100][1800,2100][1800,2100]的样子。这里为了方便说明:令BBB的首项,公差,最后一项分别为 b,d2,bnb,d2,bnb,d2,bn令CCC的首项,公差,最后一项分别为 c,d3,cnc,d3,cnc,d3,cn先把边界特判了:由于数列CCC是公共项,所原创 2022-05-01 01:55:00 · 352 阅读 · 0 评论 -
arc138 D 线性基 待补
留个坑。。。。。原创 2022-04-10 08:50:40 · 312 阅读 · 0 评论 -
11091 最优自然数分解问题(优先做) 好像之前有道区域赛和这个贪心思路差不多。。。
题目:思路:AC代码:#include <cstdio>#include <cstring>#include <iostream>#include <vector>using namespace std;typedef long long ll;ll qpow(ll a, ll k){ ll res = 1; while(k){ if(k&1) res = res*a; a = a*原创 2021-12-13 13:05:55 · 888 阅读 · 0 评论 -
ABC206--E - Divide Both(容斥&&数学分析)
题意:给你一个区间[L,R][L,R][L,R],求有多少个pair(x,y)pair(x,y)pair(x,y)满足条件。condition:gcd(x,y)!=1gcd(x,y) != 1gcd(x,y)!=1, xg!=1\frac{x}{g} != 1gx!=1, yg!=1\frac{y}{g} != 1gy!=1思路:枚举gcd之后在区间内查找满足条件gcd(x,y)!=1gcd(x,y) != 1gcd(x,y)!=1的个数。Ck2C_{k}^{2}Ck2...原创 2021-06-19 22:57:02 · 326 阅读 · 0 评论 -
P1217回文质数 Prime Palindromes(水)
P1217 [USACO1.5]回文质数 Prime Palindromes题意:给你一个区间[1,108][1,10^8][1,108],要求找出其中满足条件的个数。condition1:是回文数condition2:且是质数。思路:首先偶数长度的回文串不是质数,能被11整除因为x里奇数位置的值 = 偶数位置的值的话,那么这个数就可以被11整除这里可以降低筛法的时间复杂度之后就是线性筛法了。AC#include <cstdio>#include <原创 2021-05-25 18:56:22 · 196 阅读 · 0 评论 -
2018沈阳K - Let the Flames Begin 约瑟夫环(交学费了)
K Let the Flames Begin题意:给你一个约瑟夫环,现在有n个人,求第m个人出队时,的编号。每k个报数。思路:**tip1:**这里先引入O(n)O(n)O(n)的约瑟夫环解法。int Jos(int n,int k){ int s=0;//s表示起点 for(int i=2;i<=n;i++) { s=(s+k)%i; } return s+1;}**tip2:**本题的k和m可能很大s=(s+k)%ns = (s+k)\%ns=(s+原创 2021-04-09 20:06:37 · 258 阅读 · 0 评论 -
Educational Codeforces Round 106 (Rated for Div. 2) D - The Number of Pairs 数学公式推导
D. The Number of Pairs题意:给你一个式子c∗lcm(a,b)−d∗gcd(a,b)=xc*lcm(a,b) - d*gcd(a,b) = xc∗lcm(a,b)−d∗gcd(a,b)=x思路:(陈佬的思路)考虑从化简公式并找规律着手。另a=k1∗gcd(a,b)a = k_1*gcd(a,b)a=k1∗gcd(a,b),b=k2∗gcd(a,b)b = k_2*gcd(a,b)b=k2∗gcd(a,b)(由于已经提取出了公因子, 所以k1k_1k1和k2k_2k2原创 2021-03-19 11:38:56 · 124 阅读 · 0 评论 -
Good Sequences 唯一分解&&dp&&贪心
Good Sequences 题意:给你一个数列。满足以下条件递增即a[i]<a[i+1]a[i] < a[i+1]a[i]<a[i+1]求:找到一个最长的子序列,使得长度最长,但是有下面的限制:gcd(b[i],b[i+1])>1gcd(b[i],b[i+1]) > 1gcd(b[i],b[i+1])>1, 即任意相邻的元素(在子序列中)都要有公因子。思路:(局部最优解→\to→ 全局最优解)数据n=105{10}^5105 , a ∈[1,10原创 2021-02-24 22:29:56 · 139 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) C. Floor and Mod(数学推导)
C. Floor and Mod题意:给你一个式子⌊ab⌋\lfloor \frac{a}{b}\rfloor⌊ba⌋ = a%b。之后再给你两个范围来限制a和b。问最多有几对组合。思路:首先对于a%b,我们可以进行下转换。(主要是翻译下题目条件)a%b = a - ⌊ab⌋∗b\lfloor \frac{a}{b} \rfloor * b⌊ba⌋∗b对于题目 的要求: ⌊ab⌋\lfloor \frac{a}{b}\rfloor⌊ba⌋ = a%b我们另 k = ⌊ab⌋\lf原创 2021-02-13 23:27:31 · 103 阅读 · 0 评论 -
颓废中。。。。
AC FOR PROBLEM B/*皮卡丘冲鸭!へ /| /\7 ∠_/ / │ / / │ Z _,< / /`ヽ │ ヽ / 〉 Y ` / / イ● 、 ● ⊂⊃〈 / () へ | \〈 >ー 、_ ィ │ // / へ / ノ<| \\ ヽ_ノ (_/ │// 7 |/ >―r ̄ ̄`ー―_*/#include <iostream>#include原创 2021-02-01 22:58:49 · 106 阅读 · 0 评论 -
204. 表达整数的奇怪方式(exgcd,,,数学推导,借助中国剩余定理)
204. 表达整数的奇怪方式题意:y总的笔记墨染空大佬的 题解%%%%%AC# include <bits/stdc++.h>using namespace std;typedef long long ll;ll exgcd(ll a, ll b, ll& x, ll& y){ if(b==0){ x = 1, y= 0; return a; } ll d = exgcd(b,a%b,y,x);原创 2021-02-01 00:14:23 · 145 阅读 · 0 评论 -
修改过----AtCoder Beginner Contest 190 D Staircase Sequences(唯一分解&&求因子数)
D Staircase Sequences题意:给你一个和sum。问你是否可以拆成公差为1的等差数列。求:最多可以拆成多少个。思路:这题猜出来的。就是求因数个数。(偶数的因子不可以)最后记得答案*2.AC/*皮卡丘冲鸭!へ /| /\7 ∠_/ / │ / / │ Z _,< / /`ヽ │ ヽ / 〉 Y ` / / イ● 、 ● ⊂⊃〈 / () へ | \〈 >ー 、_ ィ │ //原创 2021-01-30 23:57:10 · 164 阅读 · 0 评论 -
AcWing 197. 阶乘分解(质因数分解)
AcWing 197. 阶乘分解题意:把一个n!n!n!的数进行分解。思路:先用筛法把素数筛出来。之后对于每个质数p的求法AC# include <bits/stdc++.h>using namespace std;vector<int>primes;const int N = 1e6+10;bool st[N+1];void table(){ st[1] = 1; for(int i = 2; i <= N ; i++ ){原创 2021-01-28 17:48:24 · 204 阅读 · 0 评论 -
AcWing 1381. 阶乘 (阶乘分解)
AcWing 1381. 阶乘题意:给你一个n!n!n!的数,求在10进制下最右边非零数字。思路:阶乘分解,由于末尾零的产生,会和2和5有关,所以处理时,先把2和5拿出来。最后再放回去。AC# include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(0); int n; cin>>n; int d2,d5; d2 = d5= 0;原创 2021-01-28 16:08:56 · 114 阅读 · 0 评论 -
B进制阶乘最右非零位 HRBUST - 1860(分块???我也不知道是不是分块,反正是一直分解下去)
荣耀时刻,记录一下,卡了卡了三天,主要是网上没人写过,靠自己写了一道。B进制阶乘最右非零位 HRBUST - 1860题意:给你一个n,和b问你:n!n!n!在b进制下的最右边的非零数字。思路:题目保证m为质数,所以可以知道,当∏1n\prod_{1}^{n}∏1n中出现m的倍数时,要先除掉,计算到最后,那么就是答案。(记住要%m)下面是暴力代码int brute_force(ll n, ll mod){ ll res = 1; cout<<"res--原创 2021-01-28 15:59:25 · 131 阅读 · 0 评论 -
leetcode每日一题 781. 森林中的兔子(数学&&hashmap) 2021/1/16 难度:中等
781. 森林中的兔子题意:给你一个answers数组,该数组存储每只兔子(知道有几个和它相同颜色的个数)。问:从题目的数组推出,至少有几只兔子。思路:北大大佬的,博主的表达太垃圾了,借鉴大佬的。ACclass Solution {public: int numRabbits(vector<int>& answers) { unordered_map<int,int> ma; for(auto x: answers)转载 2021-01-17 19:09:14 · 101 阅读 · 0 评论 -
数论exgcd,模线性方程组(整理)
# include <bits/stdc++.h>using namespace std;int exgcd(int a, int b, int &x, int &y){ if(b == 0){ x = 1; y = 0; return a; } int d = exgcd(b,a%b,y,x); y -= a/b*x; return d;}int main(){ in原创 2020-12-29 10:39:25 · 109 阅读 · 1 评论 -
数论五·欧拉函数 HihoCoder - 1298(欧拉函数,模板题, 线性筛&&欧拉函数)
数论五·欧拉函数 HihoCoder - 1298题意:给你一个区间,要求你求最小的欧拉函数值。(以及此时的n)。输出此时的i。思路:直接线性筛,之后枚举就行了。AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(x); i<=(y); i++)#define fori(i,x,y) for(int i=(x); i<(y); i++)#define re原创 2020-12-27 16:54:01 · 141 阅读 · 1 评论 -
871. 约数之和(乘法原理&&unordered_map<int,int>)
871. 约数之和题意:给你n个数相乘,求它的约数之和。先 质因数分解,之后用乘法原理。AC# include <bits/stdc++.h>using namespace std;int main(){ unordered_map<int,int> ma; int tt, n; cin>>tt; while(tt--){ cin>>n; for(int i = 2; i <=原创 2020-12-27 12:34:43 · 180 阅读 · 0 评论 -
870. 约数个数(unordered_map<int,int>的使用)
870. 约数个数题意:要你求约数个数。先质因数分解用乘法原理,求即可。AC# include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(0); unordered_map<int,int> ma; int tt, n; cin>>tt; while(tt--){ cin>>n; fo原创 2020-12-27 12:16:48 · 592 阅读 · 0 评论 -
质数中的质数(质数筛法) 51Nod - 1181(两次线性筛法)
质数中的质数(质数筛法) 51Nod - 1181 题意:给定n要你求第一个大于等于n的素数中的素数。(即本身是素数,且在所有素数中的编号也为素数)思路:两次筛法,第一次先筛出素数,之后根据编号再去筛。这里,主要的问题是范围的限定。注意筛法范围和素数范围相差10倍(近似,所以要加点)AC#include <iostream>#include <bits/stdc++.h>#define For(i,x,y) for(int i=(x); i<=(y);原创 2020-12-26 18:18:24 · 141 阅读 · 0 评论 -
素数检测-----c++(大数\__int128 + 随机数)\ Java大数
质数检测 V2 51Nod - 1186 题意:一个很大的数要你判断是否是素数。AC1(Java大数 + 函数)import java.util.*;import java.math.*;public class IsPrime { public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigInteger a = cin.nextBigInteger()原创 2020-12-26 17:48:16 · 131 阅读 · 0 评论 -
待补,贴个代码先(U128) 分解质因数 LibreOJ - 6466(__int128 && 椭圆质因数分解)
题目地址AC#include <bits/stdc++.h>using namespace std;using f64 = double;using f128 = __float128;using i64 = long long;using i128 = __int128;using u64 = unsigned long long;using u128 = __uint128_t;template <class T>void read(T &x)原创 2020-12-26 11:03:04 · 278 阅读 · 0 评论 -
Harmonic Number LightOJ - 1234(暴力分段打表 / 欧拉爷爷的O(1))
Harmonic Number LightOJ - 1234 题意:给你一个调和级数。f(n)=1+12+13+14+15+...+1nf(n)=1+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{5}+...+\frac{1}{n}f(n)=1+21+31+41+51+...+n1要求你求出来。n到达1e8思路1:假如直接暴力的话,时间肯定允许,但是内存肯定MLE。所以可以分段进行打表。AC1在这里插入代码片思路2:欧拉爷爷原创 2020-11-27 18:52:18 · 124 阅读 · 0 评论 -
Pairs Forming LCM LightOJ - 1236(唯一分解定理&&LCM)
Pairs Forming LCM LightOJ - 1236 题意:给你一个n。问有多少对pair(i,j)。(i <= j)思路:可以想到n = p1k1p2k2p3k3p4k4...pmkmp_1^{k_1}p_2^{k_2}p_3^{k_3}p_4^{k_4}...p_m^{k_m}p1k1p2k2p3k3p4k4...pmkmi = p1e1p2e2p3e3p4e4...pmemp_1^{e_1}p_2^{e_2}p_3^{e_3}p_4^{e_4}...p原创 2020-11-27 18:23:38 · 106 阅读 · 0 评论 -
Goldbach`s Conjecture LightOJ - 1259(筛法水题)
Goldbach`s Conjecture LightOJ - 1259 题意:给你一个数n。问:有多少种方案可以把 n拆成两个质数。(哥德巴赫猜想)思路:先暴力打表。期间把质数存起来之后存好质数后,去判断。反思:1e7的 int 对于 3e5的内存会MLE。。。qwq。血与泪的教训。(本题的解决方法:开bool,比int小了4倍内存)时间上 1e7log1e7(其中log1e7约等于7,所以不会TLE)AC#include <iostream>#include原创 2020-11-18 21:52:55 · 92 阅读 · 0 评论 -
Leading and Trailing LightOJ - 1282(快速幂 + 数学log函数)
Leading and Trailing LightOJ - 1282 题意:给你nkn^knk要求你求出 前三位 和 后三位思路:后三位,很容易就是快速幂的模板。主要是前三位。nk=10log10nk=10klog10nn^k=10^{log_{10}n^k}=10^{klog_{10}n}nk=10log10nk=10klog10n特别地,可以把klog10nklog_{10}nklog10n看作klog10n=a+bklog_{10}n = a+bklog10n=a+b即10a原创 2020-11-18 20:53:57 · 113 阅读 · 0 评论 -
Sigma Function LightOJ - 1336(唯一分解 + 思维 + 等比数列求和公式)
Sigma Function LightOJ - 1336题意&&思路:传送门反思:打完表,其实已经出结果了,嗨嗨。。。。。AC(附带打表代码)#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <cmath>#define pb push_back#define sz(a) (int)a.size()原创 2020-11-18 20:01:48 · 158 阅读 · 0 评论 -
Aladdin and the Flying Carpet LightOJ - 1341(唯一分解 + 素数打表)
Aladdin and the Flying Carpet LightOJ - 1341 题意:现在有一个矩形, 非正方形给你一个面积a,最小边的下限是b。问:有多少个矩形思路:首先可以把a进行 根据素因子进行唯一分解。(优化,可以先打表,之后再质因数分解)那么a的因子数是(num1num_1num1+1)(num2num_2num2+1)。。。(numnnum_nnumn+1).在不考虑b的情况下 ans = 上式/2(且是向下取整,因为题目不包含正方形的情况)对于一些spj原创 2020-11-18 16:43:44 · 86 阅读 · 0 评论 -
Trees in a Wood. UVA - 10214(phi函数+ 暴力 + 预处理)
Trees in a Wood. UVA - 10214 题意:给你x的范围【-a,a】。和y的范围【-b,-b】。求可以看到多少个点。思路:可以先把坐标轴上的点,单独拿掉,单独处理。(总共4个)之后再单独看一个象限,因为其他的可以等效。可以通过uva10820得到启发。题目就是求有多少个点互质。由于a范围比较小,b范围比较大,一列一列统计比较快。第x列能看到的树的个数等于0<y<=b的数中满足 gcd(x,y)= 1的y的个数。(但是b很大,所以可以分区间计算)1&l原创 2020-11-17 12:37:11 · 106 阅读 · 0 评论 -
Help Tomisu UVA - 11440(phi函数的定义 + 思维 + gcd的思想)
Help Tomisu UVA - 11440题意:给你一个n和m。统计 2–n!,有多少个x的所有素因子都大于m。思路:x的所有素因子都大于m。等价于 x 和 m!m!m! 互素。假如 x > m!m!m! 。根据gcd里辗转相除法的定义,可以知道 x 和 m!m!m! 互素 当且仅当 x% m!m!m! 与 m!m!m! 互素。这样只需要求出不超过 m!m!m! 且与 m!m!m! 互素的正整数个数即可。最后ans再乘 n!m!\frac{n!}{m!}m!n!即可。(因为 n!n原创 2020-11-17 12:22:47 · 83 阅读 · 0 评论 -
Prime Independence LightOJ - 1356(kuangbin专题14 数论专题) 质因数分解 + 二分图最大匹配(最大流 || HK...)
Prime Independence LightOJ - 1356 题意:给你一个数的集合。问你是否可以找到一个集合,使得里面的元素互质 or 相除的商不是质数(大数除以小数)。思路:可以根据一个数的质因子,来划分成两个集合。从而把问题转换成二分图最大匹配。分为含有 奇数个质因子 和 含有偶数个质因子。可以发现,两边集合,当相差一个质因子时,正好不满足条件。所以连一条边。先从大到小 sort一遍。 之后把每个数x质因子分解。x可以和y连边当且仅当两者相差一个质因子。所以由上,原创 2020-11-17 11:58:03 · 106 阅读 · 0 评论 -
紫薯第10章数学 && kaungbin专题14数论基础
先上概率数学18730 涂色问题时间限制:1000MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: 不限定Description在某大学的农场里,n间牛舍住着n头奶牛。现在你需要为n间牛舍的外墙涂色,有m种可选颜色。我们已经知道当相邻两间牛舍颜色相同时,奶牛们会集体发疯。请问有多少种涂色方案会让奶牛们发疯,由于答案可能较大,输出对1000000007求余的结果。输入格式仅一行,两个整数n和m,代表牛舍数量和颜色数量。(1<=n<=1e12),(1&原创 2020-11-15 16:28:14 · 289 阅读 · 0 评论 -
Send a Table UVA - 10820(思维+欧拉函数)
Send a Table UVA - 10820 题意:给你n*n个二元组,要求你统计要预先算出多少个(x,y)。(其中(kx,ky)可以通过(x,y)推出来)。思路:本质:输入n,有多少个二元组(x,y)满足:1<=x,y<=y,且x和y互素。不难发现除了(1,1)之外,其他满足条件的二元组(x,y)中的x和y都不相等。假设满足x<y的二元组有f(n)个,那么ans = 2*f(n)+1。根据欧拉函数的定义f(n)=phi(2)+phi(3)+...+phi(n)f(n)原创 2020-11-15 16:26:44 · 99 阅读 · 0 评论