数学
文章平均质量分 75
数学问题
Clarence Liu
https://github.com/ComingCL
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快慢指针问题
这个问题是个经典问题。这个推导过程要理解。原创 2026-01-06 23:33:01 · 477 阅读 · 0 评论 -
慢速乘和快速乘简单回顾和整理
慢速乘这种方法常常用在快速幂里面,替换整数乘法的部分,因为两个大整数相乘可能直接爆掉long longlong\ longlong long,原理如下因为一个数总是有唯一的二进制表示,所以我们把指数表示成二进制,比如a×3a\times3a×3,那么因为3=(11)23=(11)_23=(11)2,所以a×3=a×2+a×1a\times3=a\times2+a\times1a×3=a×2+a×1,所以可以很自然的写出程序typedef long long ll;ll sl原创 2021-10-18 21:50:16 · 375 阅读 · 0 评论 -
快速幂与矩阵快速幂
快速幂引入快速幂例题矩阵快速幂例题引入在计算整数乘方问题时,如果我们使用朴素的方法,比如求Kn需要连续乘n-1次,有的时候,比如求2的一亿次方,需要的时间是较长的,使用pow函数也很慢,而一些问题又对时间有严格的要求,所以就要想办法改进快速幂基于分治的思想,可以想到,如果要计算2的100次方,如果已经得到2的50次方,那么只需要两个2的50次方相乘即可,不需要再去乘50个2,基于这个想法,可以得到如下程序一般乘方运算都会得到一个很大的数,所以往往会取模ll quickpow(ll ba原创 2021-01-31 22:23:10 · 231 阅读 · 0 评论 -
如何计算n!所含质因子p的数量
问题引入和简单分析对于质数,大家应该都不陌生,现在有一个问题,如果给定我们正整数nnn和ppp,如何求出n!n!n!里面有多少个质因子ppp可以仔细考虑一下,根据唯一分解定理,任何一个大于1的正整数都能够写成若干个质数乘积的形式,所以如果n!∣pn!|pn!∣p,我们可以一直除下去直到不能整除,这时候能除多少次就有多少个质因子ppp上述思路是容易的,但是不能忽略一个重要问题,C++能够表示的数据并不是无限大的,n!n!n!又是一个非常大的数,那么在不能直接得到n!n!n!的时候,能不能直接求出这个答原创 2021-04-12 16:38:36 · 1329 阅读 · 0 评论 -
康托展开简单记录
作用求一个[1,n][1,n][1,n]按照字典序从小到大排列的排名例题https://www.luogu.com.cn/problem/P5367过程以{1,2,3,4,5}\{1,2,3,4,5\}{1,2,3,4,5}为排名为1的序列,那么{1,2,3,5,4}\{1,2,3,5,4\}{1,2,3,5,4}就是排名为2的排列,考虑一下如何求{5,1,4,3,2}\{5,1,4,3,2\}{5,1,4,3,2}将数子逐个分析,考虑字典序,因为第一个5右侧有四个比它字典序小的数,每一个原创 2022-04-02 14:02:16 · 557 阅读 · 0 评论 -
2022牛客寒假算法基础集训营4 B、 G两题
定义子序列权值为子序列最小值和最大值的乘积,问一个数组中所有非空子序列的权值乘积是多少,取模理解题解中所讲的一个长度为kkk的区间,中间的数对答案的贡献是2k−22^{k-2}2k−2,但是此题有更好的办法考虑枚举每一个数,当然首先把它们从小到大排序,设这个数是第iii个,iii从0开始,那么因为已经排好序了,那么它能够对答案造成多少贡献呢?因为贡献一定是这个数是子序列里面的最大值或者是最小值,如果成立为最小值,那么子序列的其他数一定是在这个数后面的某些数或者没有,它后面一共有2n−i−12^{n-i原创 2022-02-10 09:56:19 · 380 阅读 · 0 评论 -
Dirichlet 前缀及后缀和 Divan and Kostomuksha
目录Dirichlet前缀和概述代码例题Dirichlet后缀和概述代码例题未完待续Dirichlet前缀和概述狄利克雷前缀和是用来求解这样的问题,给定{an}\{a_n\}{an},求解{bn}\{b_n\}{bn},使得bk=∑d∣kadb_k=\sum_{d|k}a_dbk=d∣k∑ad代码例题处分析for(int i=1;i<=CntPrime;i++) for(int j=1;j*Prime[i]<=N;j++) B[ j*Pr原创 2021-11-29 22:56:27 · 1200 阅读 · 0 评论 -
Codeforces Round #757 (Div. 2) C. Divan and bitwise operations
这个题实在太巧了给你一个数组的元素个数,给出若干个区间的或和,问任意一个合法的原序列的所有子序列的区间异或和是多少或的特点是二进制位只要有一个1,结果的对应位置就是1,可以想一下,给出这若干个区间信息,想要还原数组基本不太可能,而且就算是还原出了原来的数组,我们又怎么算这所有子序列的异或和呢?这个思路不靠谱单独考虑某一位上的数字,如果这个数字在给出的区间范围内没有体现,那它就不会出现在答案中;否则要考虑子序列中该位对应的数出现奇数次和偶数次这两种情况,如果是偶数次,它对答案的贡献也是0;如.原创 2021-11-29 11:08:54 · 441 阅读 · 0 评论 -
poj 1183 反正切函数的应用 公式推导
给出一个公式arctanA+arctanB=arctan(A+B1−A×B)arctanA+arctanB=arctan(\frac{A+B}{1-A\times B})arctanA+arctanB=arctan(1−A×BA+B)现在给你arctan1A=arctan1B+arctan1Carctan\frac1 A=arctan\frac1 B+arctan\frac1CarctanA1=arctanB1+arctanC1输入AAA,问B+CB+CB+C的最小解根据公式很容易能够得到ar原创 2021-11-21 00:15:42 · 1030 阅读 · 0 评论 -
高斯消元相关问题学习和模板整理
目录前言高斯消元法行列式求值矩阵求逆拉格朗日插值前言为什么要写这篇文章?因为icpc济南J题翻车了,不会写行列式,手里没板子,现场抄书手写,过不了实属正常,所以必须要整理一下高斯消元了高斯消元法{a1,1x1+a1,2x2+...+a1,nxn=b1\begin{cases}{a_{1,1}x_1+a_{1,2}x_2+...+a_{1,n}x_n=} b_1\\ &\text{}\end{cases}{a1,1x1+a1,2x2+...+a1,nxn=b1行列式原创 2021-11-17 21:41:29 · 466 阅读 · 0 评论 -
扩展欧拉定理(欧拉降幂)简单整理
欧拉降幂问题引入二级三级目录问题引入二级三级目录原创 2021-10-19 20:12:29 · 1317 阅读 · 0 评论 -
hdu 7095 Add or Multiply 1 第二类Stirling数
https://acm.hdu.edu.cn/showproblem.php?pid=7095给出若干个加法和乘法的操作次数,问有多少个本质不同的操作序列比如说如果有两个加法和一个乘法,那么得到的操作序列可以是下面的几种1◯((x+a1)+a2)×a32◯((x+a1)×a3)+a23◯((x+a2)+a1)×a34◯((x+a2)×a3)+a25◯((x×a3)+a1)+a26◯((x×a3)+a2)+a1\text{\textcircled{1}}((x+a_1)+a_2)\times a_3\\原创 2021-08-24 00:34:16 · 221 阅读 · 0 评论 -
互质的两个数不能凑出的最大数
这个问题的数学描述是这样的,给你互质的两个数aaa和bbb,问k1a+k2b(k1>1,k2>1)k_1a+k_2b(k_1\gt1,k_2\gt1)k1a+k2b(k1>1,k2>1)不能等于的最大数是多少?随便举几个例子比如2,3,5,7,9,11......2,3,5,7,9,11......2,3,5,7,9,11......这些数中随便拿出两个,通过打表找他们能够凑出哪些数可以发现,总能在某个位置之后能够凑出的数变得连续从而一直到无穷大都能达到,那么究竟它们不能原创 2021-08-11 18:52:32 · 2968 阅读 · 0 评论 -
扩展欧几里得原理及应用
扩展欧几里得引入欧几里得算法扩展欧几里得算法例题引入任何一个问题的研究绝不是空穴来风,看下面一个问题a、b、ca、b、ca、b、c已知,如何求ax+by=cax+by=cax+by=c的xxx和yyy欧几里得算法扩展欧几里得算法例题...原创 2021-04-17 16:50:59 · 753 阅读 · 0 评论 -
UVA12716 GCD(a, b)= a^b的结论
题目大意:给定N,规定1<=B<=A<=N,问有多少对A,B能使得GCD(a, b) = A ^ B,N的范围是三千万,时间范围5000ms这道题需要证明一个结论b⩽ab\leqslant ab⩽aGCD(a,b)⩽a−b⩽a⊕bGCD(a,b)\leqslant a-b\leqslant a\oplus bGCD(a,b)⩽a−b⩽a⊕b左边的不等号显然成立;考虑右边,根据异或的运算法则,将a和b都转换成二进制,从右往左看,如果对应位置相同,那么异或结果为0,作差也为0;如果不同原创 2021-03-13 17:30:52 · 254 阅读 · 0 评论 -
欧拉函数原理及练习
欧拉函数问题引入欧拉函数原理练习问题引入现在有一个问题,给定一个数n,求出1~n和n互质的数的个数暴力做法,for一遍,求每一个数和n的GCD,如果结果为1,即为合法答案。这种做法应该说在n比较小的时候还是可以的,如果n比较大,还不够好欧拉函数原理欧拉函数可以解决这个问题,设f为欧拉函数,f(x)的含义就是1~x与x互质的元素个数首先要知道欧拉函数是一个积性函数,什么是积性函数?顾名思义就是形如f(xy)=f(x)×f(y)f(xy)=f(x)\times f(y)f(xy)=f(x)×原创 2021-03-11 17:29:13 · 706 阅读 · 2 评论 -
逆元的线性递推求解方法及阶乘逆元
我们已经学过了利用扩展欧几里得和费马小定理求解乘法逆元的方法,但是对于这道题,这两种方法都失效,那么我们需要找到一种线性的算法来求解,时间复杂度才合格,如果对于逆元概念存在问题可以看一下第一个链接可以这样考虑,...原创 2021-03-11 10:33:30 · 5070 阅读 · 3 评论 -
逆元的两种常见计算方法
逆元概念引入求解方法费马小定理扩展欧几里德概念引入学习逆元之前,首先要知道什么叫逆元逆元这个概念通常是用来解决除法求模问题的,关于求模,有下面的公式(a+b)%c=a%c+b%c(a−b)%c=a%c−b%c(a∗b)%c=(a%c∗b%c)%c(a+b)\%c=a\%c+b\%c\\(a-b)\%c=a\%c-b\%c\\(a*b)\%c=(a\%c*b\%c)\%c(a+b)%c=a%c+b%c(a−b)%c=a%c−b%c(a∗b)%c=(a%c∗b%c)%c可以看出,对于除法没有相应的取原创 2021-03-09 15:43:51 · 6482 阅读 · 2 评论 -
UVA11582- Colossal Fibonacci Numbers! 斐波那契数列循环节问题
题目意思很简单,给定a、b、n,求斐波那契数列第ab项模n的值,那么如何考虑呢?首先我们应该知道求斐波那契数列的任意一项可以使用矩阵快速幂,速度很快,但是对于这道题,由于a和b都非常大,所以不能使用这种方法,考虑到最后都要模一个n,考虑斐波那契数列会出现循环节,如果要问为什么,因为斐波那契数列连续两项和等于后一项,所以如果出现和最开始相同的两项,那么就说明找到了循环的位置,而且这循环节一定存在所以可以看出随着n的不同,斐波那契循环节在发生变化,且对于每一个n应该有唯一一个循环节,那么就可以...原创 2021-03-07 20:19:02 · 213 阅读 · 0 评论 -
反素数概念及理解
关于反素数的概念参考题目链接素数是因子最少的数,那么反素数就是因子多的数,如果在一个数之前所有的数因子数量小于这个数的因子数量,那么这个数就是一个反素数那么怎么解这个问题呢?要求解这个问题,首先要知道几个结论, 首先是唯一分解定理:任何数都可以拆成n个素数乘积的形式,且唯一 如果一个数可以写成233251这种形式,那么它有多少个因子呢?根据排列组合的知识,可以明白是432=24个,也就是选择多少个2,多少个3,多少个5的问题 将一个数的最小质因子按照从小到大的顺序排列起来,如果这个数是反素数。原创 2021-03-05 00:00:47 · 650 阅读 · 1 评论 -
使用java处理高精度计算
如果使用C++进行大数运算,需要使用数组模拟计算过程,如果涉及到加减乘除甚至乘方,问题就变得相当麻烦,为了避免这些不必要的麻烦,可以使用java的BigInteger类或者Python来处理,在这里使用javajava处理高精度计算只需要注意一点,就是熟悉BigInteger类的使用方法,其余问题都在于题目本身例题hdu1047 大数加法这个题需要把输入弄明白,他是通过0的个数来确定数据组数的import java.math.BigInteger;import java.util.*.原创 2021-01-30 18:53:34 · 978 阅读 · 0 评论 -
素数筛法及习题
素数筛法引入埃拉托色尼筛法欧拉筛法习题引入素数是指只能被1和自身整除的数初学编程的时候,只根据这个素数的这个定义,我们能够写出简单的判断素数或者素数打表的程序,大概如下bool Is_prime(int n){ if(n == 2) return true; if(n == 1||n % 2 == 0) return false; for(int i = 3;i < n;i+=2) if(n % i == 0) return false; return t原创 2021-01-21 02:36:32 · 442 阅读 · 0 评论
分享