数论
文章平均质量分 81
LittleRewriter
这个作者很懒,什么都没留下…
展开
-
基础数论算法(三) 逆元和gcd的几道题
参考:http://blog.csdn.net/acdreamers/article/details/8220787逆元先来说说逆元是什么。我们知道,(a*b)%c=((a%c)(b%c))%c,这为我们快速幂什么的带来了非常大的方便。那么a/b呢?显然(a/b)%c不满足乘法一样的性质,那么我们有一个便利的工具:(a/b)%c=(a*b−1b^{-1})%c。这里的b−1b^{-1}不是指代1b\原创 2017-08-07 12:29:34 · 497 阅读 · 0 评论 -
codeforces914C Travelling Salesman and Special Numbers 二进制特性+组合数学+递推
比较骚的一道题。。 题意大概是,我们定义一次操作α" role="presentation" style="position: relative;">αα\alpha:将一个数i" role="presentation" style="position: relative;">iii二进制是1的位数取出来。 比如说,1010=10102" role="presentation"原创 2018-01-30 23:10:29 · 656 阅读 · 1 评论 -
母函数入门
今天好像终于对困惑已久的母函数有了些感觉的样子….赶紧水一波.jpg例一 骰子问题掷两个清廉正直的骰子,点数之和为7的情况有多少? 我们来思考一下,嗯,7 = 1 + 6 = 2 + 5 = 3 + 4所以有6种。但是这样看上去一脸不爽的样子,所以我们不妨来搞一些事情。 令f(x)=x+x2+x3+x4+x5+x6f(x) = x + x^2 + x^3 + x^4 + x^5 +原创 2018-01-06 00:10:12 · 937 阅读 · 1 评论 -
codeforces895B XK segments
蛮有趣的一道题。 先来说说题意,大概是:对一个数组a,定义符合条件的二元组(i,j)(i, j)表示恰好存在kk个整数,满足ai≤y≤aja_i \leq y \leq a_j且yy为xx的倍数,求符合条件的二元组数量。一上来有些懵逼,不妨先找找规律。 我们知道,假定存在kk个这样的整数,那么首先[L,L+(k−1)∗x][L, L + (k - 1) * x]一定是符合条件的一个区间,然后考虑原创 2017-12-15 22:45:16 · 292 阅读 · 0 评论 -
cf891A Pride 题解
有史以来第一次rating为正..手速之力是无穷的!(雾) 这题还是蛮有趣..想到了区间DP但是发现转移不动,还是naive..来看看题意。一串数,每次只能将相邻两个元素中的一个变成1,问要求最少多少次GCD才能全为1。如果不能,就输出-1。 如: [2, 2, 3, 4, 6]变换: - [2, 1, 3, 4, 6] - [2, 1, 3, 1, 6] - [2, 1, 1, 1,原创 2017-11-18 12:00:37 · 978 阅读 · 0 评论 -
cf870c Maximum splitting 题解
先来说说题意。将一个数剖成一些合数,问最多能剖成多少个。我们知道,最小的合数是4,所以贪心思路就是尽量多的get到4这个合数。 分析一下,显然,如果这个数是4的倍数,直接除4;如果除4余2,那么不妨来思考一下,除以4之后剩下一个2,刚好可以和4凑一个6。 而对于除4余1的情况,我们发现1+4+4=9是个合数,所以这里需要两个4才能凑出来,也就是a/4-1。对于除4余3的情况,3+4+4+4=15原创 2017-10-15 19:29:31 · 318 阅读 · 0 评论 -
基础数论算法(⑩) Catalan数与Stirling数
严格的说,这一节已经脱离了数论的范畴……Catalan数的公式Catalan数的递推公式: f(n)=∑n−1i=0f(i)∗f(n−i−1)f(n)=\sum^{n-1}_{i=0}f(i)*f(n-i-1) f(n)=f(n−1)×(4n−2)n+1f(n)=\dfrac{f(n-1) \times (4n-2)}{n+1} Catalan数的通项公式: f(n)=Cn2n−Cn−12n原创 2017-08-17 10:34:50 · 765 阅读 · 0 评论 -
基础数论算法(7) 欧拉函数与BSGS算法
欧拉函数我真的觉得欧拉无所不能…在提到欧拉函数之前,我们先要说一个定义:积性函数。什么是积性函数?对于互质的数a,b,有f(ab)=f(a)*f(b)。 这个玩意真的特别神奇。最简单的积性函数是τ(n)\tau (n),这个函数表示所有因子数量。例如,τ(6)=4\tau(6)=4,τ(2)=2\tau(2)=2,τ(3)=2\tau(3)=2,τ(6)=τ(2)∗τ(2)\tau(6)=\tau原创 2017-08-14 12:32:26 · 717 阅读 · 0 评论 -
基础数论算法(八) 矩阵乘法与线性齐次递推公式的快速求值
矩阵乘法可是zhx钦定说考的可能性挺大的东西!矩阵乘法一个n*m的矩阵乘一个m*p的矩阵会得到一个n*p的矩阵。 因此有一道区间dp模板叫矩阵链乘法,不过这个不是重点。 矩阵乘法如果要简单的说,就是行乘每一列放在对应的行上。这么说可能不太清楚,不过我觉得代码比一堆∑\sum清晰的多。void multi(int m,int n,int p){ for(int i=0;i<m;++i)原创 2017-08-15 12:34:18 · 922 阅读 · 0 评论 -
codeforces837E Vasya's Function
首先在下参考了http://blog.csdn.net/calabash_boy/article/details/76652792 以及submit#29208538 数论什么的最讨厌了……设f(x,y),若y=0,则f(x,0)=0,否则f(x,y)=f(x,y-gcd(x,y))。 数据范围是1<=x,y<=101210^{12}所以不能指望暴力(没错,3点就会T) 那么来分析一下。原创 2017-08-05 17:04:24 · 1249 阅读 · 0 评论 -
codeforces833 A题解
codeforces834C原创 2017-08-02 15:40:36 · 519 阅读 · 0 评论 -
基础数论算法(六) 素数的筛法与质因数分解
素数筛法如果我们需要多次判断是不是素数时,比起无数次的枚举、测试,还是提前筛出一张素数表比较好Eratosthenes筛法一般情况下够用的筛法。复杂度nlnlnn,关键是不容易写错。还有别问我这个复杂度怎么算出来的。实现非常简单。#include <iostream>#include <cstring>using namespace std;#define MAXN 1000001int m原创 2017-08-12 14:50:10 · 1086 阅读 · 0 评论 -
cf841A Godsend
开门,上帝送温暖……才怪啊两个人在玩一个无聊的游戏。有一串数,第一个人能拿走和为奇数的一部分,第二个人能拿走和为偶数的一部分,没办法拿的人输,问谁赢。我一开始还以为是必胜策略什么的……后来发现…… 首先,关注奇偶性时无需在意数字本身,我们不妨把奇数当成1,偶数当成0。 显然如果有奇数个奇数,就可以一次拿走,第一个人赢。 如果有偶数个奇数,第一个人可以拿到只剩下一个奇数为止,这样还是第一个人赢。原创 2017-08-19 14:19:57 · 470 阅读 · 0 评论 -
基础数论算法(1)整除与同余
整除 同余原创 2017-08-03 13:25:29 · 2230 阅读 · 0 评论 -
基础数论算法(5) 素数的判定
有关素数的研究很久之前就已经开始,根据科(xuan)学研究,数质数有助于睡眠。那么如何高效的让计算机数质数,跑得更快?这就是我们要探讨的主要内容。O(n√\sqrt{n})判定法数据比较小的时候,O(n√\sqrt{n})判断法就够了。方法就是从2枚举到n√\sqrt{n}。(顺便吐槽一句数学必修三居然枚举到n-1,差评) 实现:bool isPrime(int x){ if(x<2)原创 2017-08-10 15:42:10 · 515 阅读 · 0 评论 -
基础数论算法(2) GCD LCM EXGCD 学习笔记
继续学习数论…… 本文除非特殊说明,所有的数都是整数 本文参考:欧几里德与扩展欧几里德算法一、gcdlong long gcd(long long x,long long y){ return y==0?x:gcd(y,x%y);}应该没什么好说的吧……非常朴素的算法 还有一种位运算优化,感觉实现起来非常复杂,NOIP也不大可能卡这个所以就不谈了……二、lcd 只需要记住一个公式:原创 2017-08-06 11:37:09 · 840 阅读 · 0 评论 -
基础数论算法(4) 中国剩余定理
最后的gcd相关!中国剩余定理是这么一个问题。 “今有物不知其数,三三数之余二,五五数之余三,七七数之余二。问物几何?” 答曰:二十三。口诀:三人同行七十稀,五树梅花廿一枝,七子团圆月正半,除百零五便得知。 嗯,我知道没有看懂。 首先来说一下这题是干啥的。实际上,题目想让解一个线性同余方程组: ⎧⎩⎨x≡2(mod 3)x≡3(mod 5)x≡2(mod 7)\begin{cases原创 2017-08-09 15:34:04 · 898 阅读 · 0 评论 -
基础数论算法(⑨) 高斯消元与LU分解
高斯消元高斯消元是什么?其实虽然名字高大上,换个名字就是加减消元法。 首先,我们有一个线性方程组 a11x1+a12x2+..+a1nxn=b1a_{11}x_1+a_{12}x_2+..+a_{1n}x_n=b_1 a21x1+a22x2+..+a2nxn=b2a_{21}x_1+a_{22}x_2+..+a_{2n}x_n=b_2 …….. an1x1+an2x2+..+annxn=b原创 2017-08-16 11:10:41 · 3576 阅读 · 1 评论 -
exgcd 重修
kino好强啊orz 突然发现连青蛙的约会都没过 怎么办 威严尽失(似乎从未存在) 重修好了! 新年版的CSDNemmmmmexgcd的数学推导真是受不了最近的CSDN了。。数学公式怎么可以那么丑!!! 先证gcd的性质,即gcd(a,b)=gcd(b,a mod b)gcd(a,b)=gcd(b,a mod b)gcd(a , b) ...原创 2018-02-08 09:38:52 · 434 阅读 · 0 评论