![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
EnjoyingAC
bugger,写bug爱好者。
展开
-
分金币(Spreading the Wealth,UVa 11300,中位数)
每个人只会与左右相邻的人进行交互,即一共进行n次交互。而A给B两个金币,B给A四个金币等价于B给A两个金币,所以俩人的交互可以用一个值x[i]来表示。问题转化为求n个xi的值之和的最小值。设x[i]表示第i个人给第i-1个人的金币的数量,如果x[i]为负,说明第i个人从第i-1个那拿了x[i]个金币。因为最终每个人的金币为所以金币数量的平均值(设为m),所以a[i]-x[i]+x[i+1]=m.又因为前n-1个原创 2017-12-28 20:41:15 · 212 阅读 · 0 评论 -
AtCoder Regular Contest 102 C - Triangular Relationship(数论、同余)
题目链接https://arc102.contest.atcoder.jp/tasks/arc102_a题意给定N和K。 求三元组(a,b,c)的个数。 三元组满足下面条件: a、b、c的值都是不大于N的正整数。 a+b、b+c、a+c都是K的整数倍。题解根据数论同余的知识: a mod K + b mod K = K mod K. b mod K + c mod ...原创 2018-09-02 10:21:01 · 466 阅读 · 0 评论 -
51nod 1103 N的倍数 (鸽巢原理)
题目链接https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1103题意一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数。 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。题解求出前缀和sum[i],表示前i个数的和...原创 2018-09-08 09:30:36 · 243 阅读 · 0 评论 -
51nod 1108 距离之和最小 V2 中位数、三维独立处理
题目链接https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1108题意三维空间上有N个点, 求一个点使它到这N个点的曼哈顿距离之和最小,输出这个最小的距离之和。 点(x1,y1,z1)到(x2,y2,z2)的曼哈顿距离就是|x1-x2| + |y1-y2| + |z1-z2|。即3维坐标差的绝对值之和。题...原创 2018-09-05 15:21:46 · 183 阅读 · 0 评论 -
51nod 1110 距离之和最小 V3 中位数、乘法的含义
题目链接https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1110题意X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i]。点P到点P[i]的带权距离 = 实际距离 * P[i]的权值。求X轴上一点使它到这N个点的带权距离之和最小,输出这个最小的带权距离之和。题解设答案为ans。那...原创 2018-09-05 15:29:08 · 258 阅读 · 0 评论 -
Codeforces 1037A Packets (二进制位数)
题目链接http://codeforces.com/contest/1037/problem/A题意给定n个硬币,每个硬币的币值为1. 将硬币打包,每个包要么不用要么全用。 求组成1,2,3,…,n的最少的包数。题解求数n的二进制位数即可。AC代码#include <bits/stdc++.h>using namespace std;const ...原创 2018-09-03 17:05:37 · 401 阅读 · 0 评论 -
Codeforces 1037B Reach Median (STL,二分)
题目链接http://codeforces.com/contest/1037/problem/B题意给定n和s。然后有n个数。 对第i个数可以进行操作,将其值加1或者减1。 求使得n个的中位数为s的最少操作次数。 中位数的意思就是将n个数排序后恰好在第n/2+1位的数。n保证是奇数。题解首先将n个数进行排序。 然后找出值为s的数的起始位置l和最终位置r。如果l在中间...原创 2018-09-03 17:14:03 · 227 阅读 · 0 评论 -
51nod 1060 最复杂的数 (素数约数定理、反素数、dfs)
题目题解根据质数的唯一分解定理,可以知道任意一个数n都可以分解成若干个质数的幂的乘积的形式。 n=p1^k1 * p2 ^k2 * …* pm^km.每个分解处理的质数幂pi^ki贡献约数的个数是ki+1个(pi^0 ~ pi^ki). 根据乘法原理,总的约数个数为 (k1+1) * (k2+1) * … * (km+1).那么,同样分解成km个素数的话,pi呈升序的情况...原创 2018-09-12 10:54:29 · 315 阅读 · 0 评论 -
51nod 1282 时钟 (哈希、字符串的最小表示法)
题目题解要判断时钟是否相同,只需将时钟的指针排序后求出M个距离,然后看距离数组是否是循环同构即可。循环同构: abcd的循环同构有:abcd、bcda、cdba、dabc。要判断是否循环同构,可以求出距离数组的最小表示。然后对这个最小表示数组求一个哈希值,判断这个哈希值是否相同。最小表示就是所有循环同构中字典序最小的。哈希的话,我用的是以前用过的一个方法:将每个值离散...原创 2018-09-12 19:50:03 · 319 阅读 · 0 评论 -
51nod 1280 前缀后缀集合 (离散化、哈希、素数表)
题目链接https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=627203题意一个数组包含N个正整数,其中有些是重复的。一个前缀后缀集是满足这样条件的下标对(P,S), 0<= P,S < N 满足数组元素A[0..P]的值也在A[S..N - 1]的值中出现,并且A[S..N - 1]中的值也再A[0.....原创 2018-09-10 11:10:53 · 193 阅读 · 0 评论 -
CSU 2115 Multiplication Game (素数筛法)
题意Alice和Bob玩游戏。 给定一个数N。初始M=1。每轮操作要求从N的素因子中选一个数p出来,然后M=M*p。最后一轮使得M=N的人获胜。M大于N,平局。解题因为1e12差不多接近了2^31,所以先对[1,1e6]的范围打一个素数表。 根据这个素数表,对N进行质因数分解。 分解后的结果有三种情况: (1)有三个及以上的质因子。这时肯定打平。 (2)有两个质因子。这时看这...原创 2018-07-29 19:58:53 · 263 阅读 · 0 评论 -
FZU2294 Uint47 calculator(快速乘取模)
解题用mapAC代码#include &lt;cstdio&gt;#include &lt;algorithm&gt;#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;map&gt;typedef long long ll;using namespa原创 2018-06-24 17:15:25 · 634 阅读 · 1 评论 -
【JAVA大数&&卡特兰数】Buy the Ticket HDU - 1133
题目链接Buy the Ticket HDU - 1133题目The “Harry Potter and the Goblet of Fire” will be on show in the next few days. As a crazy fan of Harry Potter, you will go to the cinema and have the first sigh...原创 2018-05-05 11:43:55 · 177 阅读 · 0 评论 -
单变元模线性方程算法及证明
题目已知a,b,n,求x,使得ax=b(mod n).算法说明令d=gcd(a,n),如果d|b,则存在d个解。否则无解。 用扩展欧几里得算法求出 ax+ny=d 的一组解(x0,y0).x0即为ax=b(mod n)的一个解。d个解满足x=x0+i*n/d,i取值范围是[0,d-1].推导过程由同余方程的定义,可知ax-ny=b. 将b拆分为gcd(a,n)*t....原创 2018-03-29 22:49:46 · 503 阅读 · 1 评论 -
【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛】L题 用来作弊的药水
题目链接:https://www.nowcoder.com/acm/contest/90/L 来源:牛客网时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 在一个风雨交加的夜晚,来自异世界的不愿透露姓名的TMK同学获得了两种超强药水A、B。根据说明书,TMK知道了这两...原创 2018-03-24 21:49:03 · 149 阅读 · 0 评论 -
Chess Queen UVA - 11538(计数原理)
题目链接https://vjudge.net/problem/UVA-11538题意给定一个n*m的棋盘和黑白两个棋子,在棋盘上放这两个棋子,要求棋子满足以下条件之一: (1)在同一行上 (2)在同一列上 (3)在同一斜线上 求有多少种放的方法。分析这三种条件互不干扰,满足加法原理,可分别求出再相加。 在同一行上,先选一行,再在一行内任选两个位置。满足乘法原理,结果为...原创 2018-03-26 12:42:47 · 346 阅读 · 0 评论 -
Cheerleaders UVA - 11806(容斥原理)
题目链接https://vjudge.net/problem/UVA-11806题意给定一个n*m的棋盘和k个一样的棋子。将k个棋子放到棋盘上,要求每个棋子放一个空格里,第一行、第n行、第一列、第m列都必须有棋子。求放置棋子的方法数。分析如果我们设方法集a为“在第一行有棋子”,b为“在第n行有棋子”,c为“在第一列有棋子”,d为“在第m列有棋子”。那么所求结果就是四个集合的交集...原创 2018-03-26 23:05:11 · 203 阅读 · 0 评论 -
解题报告_Triangle Counting UVA - 11401_数学规律
题目链接https://vjudge.net/problem/UVA-11401题意给定1,2,3,…,n。从这n个数值中选三个不重复的整数作为三角形的三边,求有多少种选法。分析设三角形三边由小到大依次是a[i],a[j],a[k].根据任意两边之和大于第三边,我们只要选择的三边满足a[i]+a[j]>a[k],则一定可以组成三角形。 先通过暴力枚举,看能不能发...原创 2018-03-27 10:21:51 · 173 阅读 · 0 评论 -
卡特兰数之凸多边形的三角分割数
题意给定一个n多边形,要求用n-3条不相交的对角线把它分成n-2个三角形。求有多少种不同的方法。分析为什么是n-3条不相交的对角线?n多边形有n个顶点,依次将其编号为V1、V2、V3、…、Vn。 从V1号到V3号连线,分成一个三角形和一个(n-2)边形(因为顶点有n-3+1个)。再对(n-2)边形重新编号,并从V1号到V3号连线,如此重复,连n-3次就可以n-2个三角形。 也就...原创 2018-03-27 16:04:38 · 5546 阅读 · 0 评论 -
模板总结——扩展欧几里得
背景 求不定方程ax + by = gcd(a,b)的解集。推导过程 由欧几里得定理,可知gcd(a,b) = gcd(b,a mod b). 所以ax + by = bx’ + (a mod b)y’.又因为a mod b=a - a/b * b.(/表示整除)。 所以ax + by = bx’ + (a - a/b * b)y’.整理得: ax + by = ay’ + b(x’...原创 2018-03-28 16:23:14 · 131 阅读 · 0 评论 -
模板总结——快速幂取模
题目求a^n (mod m).代码#include <bits/stdc++.h>using namespace std;typedef long long ll;ll pow_mod(ll a,ll n,ll m){ ll ans=1,x=a; while(n) { if(n&1) { ...原创 2018-03-29 10:19:18 · 146 阅读 · 0 评论 -
北京师范大学程序设计决赛- C. 萌萌哒身高差(找规律)
题目链接http://www.bnuoj.com/v3/contest_show.php?cid=9358#problem/C题目“清明时节雨纷纷,路上行人欲断魂。”然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯。。。以下是wfy同学的日记:昨天,何老师告诉我们:明天我们去春游,大家准备好喝的和吃的哦!大家听了都兴奋起来,有的欢呼,有的鼓掌,开心...原创 2018-04-06 16:28:23 · 220 阅读 · 0 评论 -
构造一个大素数条件下的本原元(JAVA实现)
原理设p为安全素数,即使p=2q+1,且q为素数。由Fermat定理知g^(p-1) mod p=1,即g^(2q) mod p=1,因而如果w=min{t>0: g^t mod p=1}则有w整除p-1=2q,因而由q是素数知,w只能是2或q,此时g是本原元等价于g^2 mod p !=1 且 g ^q mod p !=1编程步骤1.随机生成一个素数q2.令p=2q+1,并...原创 2019-03-05 17:02:07 · 3484 阅读 · 2 评论