
数论基础
GocNeverGiveUp
这个作者很懒,什么都没留下…
展开
-
康托展开与逆康托展开
康托展开:求给定的排列在总的排列中处于第n个,其中n与给定排列是双射一一对应,我们可以利用这一特性进行哈希,解决一些状态压缩问题(八数码)康托展开详解:https://blog.youkuaiyun.com/lttree/article/details/24798653代码:#include<iostream>#include<cstring>#include<...原创 2019-03-03 19:57:09 · 135 阅读 · 0 评论 -
最小公倍数
最大公约数--欧几里得算法int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } 最小公倍数,即两个数乘积除以最大公约数,可以理解为其中一个数除以最大公约数,这样两个数的最大公约数就是1,其最小公倍数就是两个数的乘积HDU - 1108 最小公倍数#include<iostream> #inc...原创 2018-04-20 16:58:59 · 277 阅读 · 0 评论 -
排列组合知识点积累
;C(n,m)=C(n,n-m)二项式定理二项式系数:C(in)杨辉三角:右图。两端是1,除1外的每个数是肩上两数之和。系数性质:⑴和首末两端等距离的系数相等;⑵当二项式指数n是奇数时,中间两项最大且相等;⑶当二项式指数n是偶数时,中间一项最大;⑷二项式展开式中奇数项和偶数项总和相同,都是2^(n-1);⑸二项式展开式中所有系数总和是2^n组合数的奇偶奇偶定义:对组合数C(n,k)(n>...原创 2018-04-19 21:26:18 · 790 阅读 · 0 评论 -
欧拉函数线性筛(模板)
关于欧拉函数筛法,之前一直用的O(n ^2)算法phi[1] = 1;//边打表边筛选 for(int i = 2; i < 1005; i ++)phi[i] = i; for(int i = 2; i < 1005; i ++) if(phi[i] == i) for(int j = i; j < 1005; j...原创 2018-04-19 20:51:40 · 1911 阅读 · 0 评论 -
对矩阵快速幂思路积累
感觉矩阵快速幂还是挺有用的,不知道思路就很难受,刚才看了个所谓的水题,也没想出来,感觉自己对矩阵太陌生了,多积累一下经验先 HDU - 1757题意:当x<10时f(x) = x.当x>=10,f(x)=a0*f(x-1)+a1*f(x-2)+a2*f(x-3)+ …… +a9*f(x...原创 2018-04-19 19:31:58 · 143 阅读 · 0 评论 -
POJ 3233 Matrix Power Series(矩阵快速幂)
POJ 3233学习矩阵快速幂的时候推荐的例题,还是不会建立递推关系,虽然不知道怎么确立,但是可以知道解决矩阵快速幂问题的关键就是找到递推关系,并且0阵和单位矩阵的重要性不言而喻,多尝试几次应该也是可以建立起递推关系的,把问题转化到矩阵快幂。维护一个四倍的矩阵,计算之后把矩阵分块,右上角与答案是否十分接近了?#include<iostream>#include<cstring&...原创 2018-04-19 17:03:29 · 202 阅读 · 0 评论 -
SDNUOJ 1062 Fibonacci(矩阵快速幂)
题目链接本来想交poj 3070,结果大晚上的poj维护。。。想到自己oj上也有一道这样的题,线代学了矩阵,今天趁热学了学矩阵快速幂,推荐一个博客: 矩阵快速幂入门感觉这道题真的不难,题干中给出了递推过程,看到网上都是求[1,1,1,0]的n次方,但是其实求到n-1次方就行了啊,以下是推导过程:在自己oj上 求到n次方可以过,只求到n-1次方反而超时,结果其实是一样的,很难受了这波,是数据太水还是...原创 2018-04-19 00:24:04 · 276 阅读 · 0 评论 -
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B. Goldbach
传送门 : 题目链接这道题一看就不简单,因为当时通过率还不足5%,后来仔细分析了一下,显而易见不能开数组,用map也是超限,只能一个一个判断是不是素数,问题就出在了两个地方。1.忘了用 unsigned long long ,2.不知道 Miller-Rabin素数检测算法,当时想的是用一个很水的筛法bool su(long long a){ if(a == 2 || a == 3)re...原创 2018-04-22 23:21:37 · 495 阅读 · 0 评论 -
HDU 1568 Fibonacci(斐波那契通项 + 求对数)
HDU - 1568之前一直用递推求斐波那契数列,今天算是记住了他的通项,只不过这道题有点迷啊,推导过程,其中求完对数之后发现有一项计算量大且基本可以忽略,就删去这一项,带来的影响是前19项有偏差。。。,越往后偏差越小可以忽略,问题是这个规律需要自己去找,就很难受。。。但是这道题应该是想告诉我怎...原创 2018-04-18 20:49:02 · 414 阅读 · 0 评论 -
回文(质)数
回文数:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。如何判断一个数是不是回文数?//判断回文数方法bool pd_h(int x){ int y=x,num=0;//int y=x,防止x被改变 while (y!=0) { ...原创 2018-04-28 21:27:59 · 823 阅读 · 0 评论 -
Codeforces 616E Sum of Remainders(数论)(模运算)(*2200)
http://codeforces.com/problemset/problem/616/E刷题真的是一个积累知识点的过程,如果不刷这道题,永远都想不到应该是把%运算换一种表达形式进行计算题意:对于给定n,m求sum,sum = n % 1 + n % 2 + ... + n % m由于数据过大,1e13,所以暴力肯定不可取,解题思路是回归到模运算的本质上去*a % b = a -...原创 2018-12-11 21:12:05 · 180 阅读 · 0 评论 -
Codeforces 7C Line (扩展欧几里得算法)(*1800)
http://codeforces.com/contest/7/problem/C简单的扩展欧几里得算法的变形,问二元一次方程的整数解首先肯定是有解的,整数解需要保证k * gcd(a, b) = ax + by,也就是我们需要保证 -c % gcd(a, b) == 0,因此最终结果也是kx和ky,简单的扩展欧几里得算法变形,差点忘了它是干什么用的了,解二元一次方程啊。。。#inc...原创 2018-12-11 18:30:25 · 264 阅读 · 0 评论 -
Codeforces 1C Ancient Berland Circus (计算几何)(*2100)
http://codeforces.com/contest/1/problem/C第一次做计算几何相关问题,嘿嘿,对着别人的板子写的,但是学到了很多东西题意:给你一个正多边形的三个顶点的坐标,问你这个可能的正多边形的最小面积是什么思路:求给定三角型的外接圆,根据外接圆求出三个圆心角,再求出三个圆心角的最大公约数θ,2*pi/θ就是正多边形中小三角形的个数,我们此时只需要求出小三角形...原创 2018-12-03 21:27:07 · 212 阅读 · 0 评论 -
B. Divide Candies (*1600)
ACM真是一只大坑啊,这道数学题想了好久,还是看了题解才会做,真心难受题意:给定数n,m,求(1,1)->(n,n)之间所有符合条件的数对(x,y)的个数,条件为(x^2+y^2)%m == 0思路:预处理a^2%m,记录下0~m-1的结果然后计算向着大佬的方向追赶https://codeforces.com/contest/1056/problem/B#include...原创 2018-11-27 20:57:52 · 462 阅读 · 0 评论 -
大数四则运算模板
普通大数加法:#include <cstdio>#include <cmath>#include <cstring>void fan(char s[]){ char t; int i,j; for(i = 0,j = strlen(s)-1; i <= j; i++,j--) { t=s[i];...原创 2018-11-18 21:04:11 · 162 阅读 · 0 评论 -
HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)
HDU - 4549这道题以为是很水的矩阵快速幂,把矩阵{1,1,1,0}进行快速幂乘递推,ans[0][0]为a的指数,ans[0][1]为b的指数,但是疯狂wa,百度搜题解发现用到了费马小定理,A^X = A^( X mod phi(M) ) ( mod M ),又因为M为质数,所以phi(M) = M - 1,显然在矩阵乘法中%1000000006更不易溢出,所以推测wa结果为%1000...原创 2018-08-13 09:50:58 · 228 阅读 · 0 评论 -
逆元の复习
什么是逆元当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:设c是b的逆元,则有b*c≡1(mod m);则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m);即a/b的模等于a*b的逆元的模;逆元就是这样应用的 乘法逆元,用于解决一个数除以另一个数后取模的问题,如果直接计算除法,整数类型会丢失精度,...原创 2018-08-07 15:06:15 · 302 阅读 · 0 评论 -
求一个数的因子数及平方数判断
对于一个自然数N,都可以分解质因子得到如下形式:怎么推出来的我也不知道。。。其中因子数包含自身和1注意,若要使f(n)为奇数,仅有一种可能,就是e1,e2...都为偶数时,总的因子数才为奇数,而若指数都为偶数,说明这个数必定是一个完全平方数! 判断一个数是否为平方数:根据数学的等差数列求和公式:由此可知:任意数的平方都能用一个初值为1,等差为2的等差...原创 2018-08-14 20:04:40 · 2174 阅读 · 0 评论 -
LIght oj 1336 Sigma Function(约数和为奇数)
LightOJ - 1336题意:f(n)为n所有约数的和,给你一个数n,让你求从1到n中f(n)为偶数的数有多少个分析:数x的因子和 f(x)= (1+p1+p1^2+p1^3+...+p1^a1)*(1+p2+p2^2+...+p2^a2)*...*(1+pn+pn^2+...+pn^an);因为偶数乘偶数还是偶数,奇数乘奇数还是奇数,奇数乘偶数...原创 2018-04-29 16:42:33 · 163 阅读 · 0 评论 -
Light oj 1282 Leading and Trailing(取对数)
LightOJ - 1282算一个数前三位和后三位之前做过这样的题,后三位快速幂mod1000即可,前三位我们可以通过对log10(n^k)变换算出结果需要注意的是前三位不会为0, 后三位可能为0#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#inc...原创 2018-04-29 14:19:21 · 145 阅读 · 0 评论 -
HDU 1060 Leftmost Digit (取对数)
HDU - 1060因为想学习斐波那契数列,学习过程中看到了这道题,也是数学推导过程,其实推导过程不难,但是能想到这是一个数学问题不容易,学习了,以后碰到这种非常规问题要多思考另外学习到了如何求一个数的位数,积累(复习。。。)一下数学知识推导过程:推导过程#include<iostream...原创 2018-04-18 19:33:25 · 197 阅读 · 0 评论 -
中国剩余定理学习
也是今天上午英语课看的,看大家写的概念很模糊,有些晦涩,直到看到一篇文章《如何为小学生讲透“中国剩余定理”》才完全明白,讲真的有点羞愧,没想到自己已经退步到这个水平了。。。首先题目要求:一个整数除以三余一,除以五余二,除以七余三,求这个最小整数公式:自拟的“若设要求的这个最小整数为N,数论倒数分别为M1、M2、M3,余数分别为a1、a2、a3,除数的最小公倍数的整数倍为CN=M1×a1+M2×a2...原创 2018-04-12 21:05:23 · 499 阅读 · 2 评论 -
欧拉定理
今天上午近代史和英语又看了看数论,看到了这个费马-欧拉定理,之前还真没见过,只是知道欧拉函数打表欧拉函数φ 欧拉定理是用来阐述素数模下,指数同余的性质。 欧拉定理:对于正整数N,代表小于等于N的与N互质的数的个数,记作φ(N) 例如φ(8)=4,因为与8互质且小于等于8的正整数有4个,它们是:1,3,5,7 欧拉定理还有几个引理,具体如下: ①:如果n为某一个素...转载 2018-04-12 20:01:03 · 2796 阅读 · 0 评论 -
乘法逆元及其求法
在开始之前我们先介绍3个定理:1.乘法逆元(在维基百科中也叫倒数,当然是 mod p后的,其实就是倒数不是吗?):如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x。 2.费马小定理(定义来自维基百科):假如a是一个整数,p是一个质数,那么是p的倍数,可以表示为如果a不是p的倍数,这个定理也可以写成扩展欧几里得已知整数a、b,扩展欧几里得算法可以在求得...转载 2018-04-09 20:52:47 · 516 阅读 · 0 评论 -
逆元
逆元(inv)1.什么是逆元当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:设c是b的逆元,则有b*c≡1(mod m);则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m);即a/b的模等于a*b的逆元的模;逆元就是这样应用的;2.求逆元的方法(1).费马小定理在是素数的情况下,对任意整数都有。 如果无法被整除,则...转载 2018-04-08 20:08:28 · 129 阅读 · 0 评论 -
欧拉函数学习
欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.欧拉函数的一些性质:1.对于素数p, φ(p)=p-1,对于对两个素数p,q φ(pq)=pq-12.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn. φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).3.除了N=2,φ(N)都是偶数.4.设N为正整数,∑φ(d)=N (d|N).那么我们...转载 2018-02-23 18:46:11 · 300 阅读 · 0 评论 -
利用数组筛选素数(降低时间复杂度)
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<set>#include<map>#include<queue>#include&原创 2018-01-04 21:59:22 · 649 阅读 · 1 评论 -
POJ 1061 青蛙的约会(扩展欧几里得算法)
队内赛,这道题也不会,之前见过,知道用到数论知识就让sk先忽略,后来发现所有题都不怎么会,回过头来看的时候,没想到聪明的sk小同学居然会(师哥讲过我一直都没用过),然后回过头来补的时候也多亏sk指点迷津正题:扩展欧几里得算法 这个博客讲得很到位,讲几点自己的理解1.扩展欧几里得算法返回值是最大公约数,在过程中改变了x,y的值,所以传参数时应该加上&,而不用在意x,y的初始值2.x,y只是 ...原创 2018-02-27 16:52:16 · 471 阅读 · 0 评论 -
Light oj 1370 Bi-shoe and Phi-shoe(素数打表 + 欧拉函数)
A - Bi-shoe and Phi-shoeLightOJ - 1370很郁闷的一道数论,用到的欧拉函数,这算是第一次做用到高级知识的数论问题哈哈,做的可以说相当郁闷#include#include#include#include#include#include#include#include#includeusing namespace std;int mai原创 2018-01-05 20:02:56 · 221 阅读 · 0 评论 -
Light oj 1259 Goldbach's Conjecture
F - Goldbach`s ConjectureLightOJ - 1259Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathematics. It states:Every even integer, greater than 2, ca原创 2018-01-06 12:26:23 · 246 阅读 · 0 评论 -
UVA 11827 Maximum GCD
V - Maximum GCDUVA - 11827#include#include#include#include#include#include#include#include#includeusing namespace std;int gcd(int a, int b){// if(b == 0)// return a;//原创 2018-01-05 23:42:14 · 249 阅读 · 0 评论 -
HDU 2161 Primes (判断素数的水题)
U - PrimesHDU - 2161 Write a program to read in a list of integers and determine whether or not each number is prime. A number, n, is prime if its only divisors are 1 and n. For this problem, the原创 2018-01-05 20:47:14 · 729 阅读 · 0 评论 -
HDU 1576 A/B (逆元)
HDU - 1576之前不明白为什么要用到逆元,后来才知道惭愧惭愧。。。其实思路简单,证明不写,多刷题,感觉还挺有用的先挂一个用费马小定理求解的方法#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#incl...原创 2018-04-09 23:44:53 · 150 阅读 · 0 评论 -
SDNUOJ 1041 任意进制转换
如何实现任意进制转换?挂两个模板传送门 : 题目链接, 这道题是让十进制转换成任意进制,其实这个模板可以实现任意进制之间的转换核心思想是将之前的数先转换成十进制,再由十进制转换到目标进制第一种方式,字符数组实现(占内存大):#include<iostream>#include<cstring>#include<cstdio>#include<algo...原创 2018-04-12 19:25:07 · 599 阅读 · 0 评论 -
HDU 1521 排列组合(指数型母函数)
HDU - 1521指数型母函数也超级神奇,看到这样一句话:普通型母函数主要是来求组合的方案数,而指数型母函数是求多重排列数运用指数型母函数我们可以将求解多重排列数,即排列组合混合运算这个博客讲得很好,例子很生动:指数型母函数博客关于指数型母函数,想说一下自己的一些见解和普通型母函数相似,选择的...原创 2018-04-17 22:03:25 · 556 阅读 · 0 评论 -
HDU 1398 Square Coins(母函数刷题篇)
思路简单的母函数,多刷题多积累HDU 1398#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<set>#include<map>#include<原创 2018-04-17 20:40:29 · 168 阅读 · 0 评论 -
HDU 1085 Holding Bin-Laden Captive! (母函数)
HDU 1085学习母函数的时候看到这个题最水,就从他下手了,英语课看百度百科关于母函数的讲解,看的有点懵母函数分两种:普通型生成函数,指数型生成函数,先从普通型生成函数开始其实没有想象的那么复杂,之所以构建母函数,并且用多项式相乘的方式进行计算,推测大概就是因为指数进行运算时指数相加,指数模拟的是数的加法,而乘法有利于数的遍历,其中每个数的系数表示生成该指数的方式数,所以在我看来普通型生成函数就...原创 2018-04-17 19:54:36 · 449 阅读 · 0 评论 -
ACM常用数学公式
转载自:https://blog.youkuaiyun.com/qq_26891045/article/details/51490709 ACM常用数学公式汇总1.扇形 1.扇形面积:S=1/2×弧长×半径,S扇=(n/360)πR²2.三角函数 1.定义 基本函数英文缩写表达式语言描述正弦函数sinesina/c∠A的对边比斜边余弦函数cosinecosb/c∠A的邻边比斜...转载 2018-04-11 21:13:58 · 680 阅读 · 0 评论 -
算术基本定理(唯一分解定理 -- 分解素因子)
算术基本定理:任何大于1的自然数,都可以唯一分解成有限个质数的乘积:FZU - 1075 这是一道裸题,代码可行性不考,反正网上大佬都是这么敲的。。代码实现分解素因子:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector...原创 2018-04-11 19:33:22 · 1989 阅读 · 1 评论 -
HDU 4135 Co-prime (容斥原理学习)
感觉公式和证明好高深,百度百科上的东西只能看懂简介和定义在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。[1] 简介在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不...原创 2018-04-11 19:00:50 · 163 阅读 · 0 评论