![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【数学】
nyist_xiaod
这个作者很懒,什么都没留下…
展开
-
HDU 1271 整数对
题目链接:Click here~~题意:给你一个数n,找到另外一个数x,使得x加上x'等于n,其中,x'为x删去某一位(如第k位,假设最低位为第0位)上的数字后余下数字组成的数。解题思路:对于任意一个数字x,在此题环境下,我们都可以把它分解成3部分,k位左边部分,k位部分,k位右边部分。为了方便起见,我们把这三部分所对应的数字分别记为a,b,c。则我们可以把x表示成原创 2012-05-04 10:04:42 · 915 阅读 · 0 评论 -
HDU 4038 Stone(11年成都网络赛-H题-贪心)
题目链接:Click here~~题意:给一个数列{ai},有两种操作:1、选取数列中的一个数并给它加1。 2、在数列中添加一个数字1。问如何进行 m 次操作,使数列各项乘积 p 的值最大。解题思路:由于数列中有正负数和0,所以导致情况很多,让原创 2012-12-26 20:11:42 · 1081 阅读 · 0 评论 -
ZOJ 3665 Yukari's Birthday(12年长春区域赛-K题-二分)
题目链接:Click here~~题意:给你一个 n (10^12),让你表示成 n = k + k^2 + …… + k^r 的形式(k >= 2),找出 k*r 最小的解。解题思路:稍加分析可知,r 最大是 log2(10^12) = 39.xxxx,令 F(k) = k + k^2 + …… + k^r ,对于每一个 r,这个函数是单调递增的。原创 2012-10-16 20:18:06 · 2694 阅读 · 0 评论 -
NJUST 1747 Yet another end of the world(13年南京邀请赛-K题-数学)
题目链接:Click here~~题意:有 n 个三元组 {x,y,z},问是否存在一个任意数 num 和一对 i,j,使 num % x[i] 和 num% x[j] 的值分别落在对应的区间 [ y[i] , z[i] ] 和[ y[j] , z[j] ] 中。解题思路:由于 n 是 1e3,所以可以直接枚举 i,j,关键是如何判断他们是否存在满足这样要求的值原创 2013-05-23 17:48:39 · 1391 阅读 · 1 评论 -
HDU 4282 A very hard mathematic problem(12年天津网络赛-数学)
题目链接:Click here~~题意:给你一个式子 x^z + y^z + x*y*z = k,k 为给定的某个 int 范围内的数字。求共有多少组关于 x,y,z 的解。(0 1)解题思路:这题纠结了2天,我擦。今天终于把错误拍出来了。观察式子不难发现,显然当 z 越大的时候 x,y 的值越小。由于 y 最小等于2,所以有 2^z原创 2012-09-12 11:00:51 · 3424 阅读 · 0 评论 -
高斯消元(解线性方程组 or 线性同余方程组)
解线性方程组或线性同余方程组。陪队友写了 1 天,挺爽的。目前还没有考虑 无关变元 的情况。#include #include #include #include using namespace std;typedef long long LL;int gcd(int a,int b){ return b ? gcd(b,a%b) : a;}int lcm(翻译 2013-07-16 03:48:37 · 1576 阅读 · 0 评论 -
扩展欧几里得算法
如果事先不了解 欧几里得算法 ,请点击。扩展欧几里得算法:对于不完全为0的非负整数 a,b,必然存在整数对 X,Y,使得 aX + bY = gcd(a,b)。解法见注释。/* How to solve "aX + bY = gcd(a,b)" ?1、if b=0, gcd(a,b) = a, X = 1 , Y is any number.翻译 2012-09-13 09:43:03 · 746 阅读 · 0 评论 -
HDU 4407 Sum(12年金华网络赛-H题-容斥原理)
题目链接:Click here~~第一道容斥原理的题目。题意:有一个元素为 1~n 的数列{An},有2种操作(1000次):1、求某段区间 [a,b] 中与 p 互质的数的和。2、将数列中某个位置元素的值改变。解题思路:对于操作1,解的性质满足区间减法,则我们只需要考虑如何求 [1,n] 中与 p 互质的数的和即可。考虑到与 p原创 2012-09-29 10:02:50 · 3024 阅读 · 0 评论 -
HDU 1085 Holding Bin-Laden Captive!(母函数)
题目链接:Click here~~母函数第三题。题意是给你一定数目的1,2,5分的硬币,让你找出不能被这些硬币表示的最小价值。与前两题相比,关键是确定max的大小。#include #include const int MAX=8000;int main(){ int z,max,c1[MAX+5],c2[MAX+5],num[4],money[4]={原创 2012-03-23 14:33:18 · 2233 阅读 · 0 评论 -
HDU 4675 GCD of Sequence(数学)
题目链接:Click here~~题意:给一个序列 {an}(ai 解题思路:比赛时没有什么思路,赛后看了题解,大概懂些了。这题的关键是要想到,将比较难解的最大公约数的问题转成公约数的问题。令 f[d] 表示满足条件的且 gcd 为 d 的方案数,g[d] 表示满足条件的且 cd 为 d 的方案数。有 g[d] = f[d] + f[2*d] +原创 2013-08-16 08:42:59 · 1435 阅读 · 0 评论 -
HDU 4768 Flyer(13年长春网络赛-J题-二分)
题目链接:Click here~~题意:有 n 次操作,每次操作是对区间 [a,b] 中以 a 为开头,步长为 c 的点的值加 1。操作之后,最多出现一个值为奇数的点,找出那个点和那个奇数是多少。解题思路:由于区间的范围很大,所以无法暴力。对于每次操作,相当于给出了一个等差数列,而且可以在 O(1) 的时间求出这个数列中有多少个数。然后思原创 2013-09-29 21:15:36 · 1169 阅读 · 0 评论 -
ZOJ XXXX Candies(13年长沙网络赛-J题-数学)
题目链接:Click here~~题意:有 n 个人,每人手里有若干糖果,有一些人的糖果数量不确定,但给出每相邻三个人的糖果数量和(起始端和末尾端是两个人)。然后给出若干询问,求出某个人的最大可能的糖果数量。解题思路:先将第二个条件中的 sum 相邻项作差,可以得出若干等式 a[3] - a[0] , a[4] - a[1] , a[5] - a[2]原创 2013-09-23 13:25:06 · 1189 阅读 · 0 评论 -
HDU 4497 GCD and LCM(数学)
题目链接:Click here~~题意:问有多少个三元组 {x,y,z} ,使得 gcd(x,y,z) = G && lcm(x,y,z) = L。(顺序不同视为不同方案)解题思路:开始没注意括号里的条件,纠结了一天。之前和队友 yzwsm 讨论过类似的二元组的问题,记得当时提到过将 G 和 L 分解质因子的方法,于是做这题时一下就联想到了。首先原创 2013-09-03 21:39:23 · 2025 阅读 · 0 评论 -
ZOJ 3621 Factorial Problem in Base K(K进制)
题目链接:Click here~~题意:解题思路:原创 2014-05-01 19:28:50 · 2025 阅读 · 0 评论 -
康托展开与逆康托展开
int fac[]={1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800};int cantor(char* s){ int n = strlen(s), ans = 1; for(int i=0;i<=11;i++) { int cnt = 0; for(int j=i+1;j<翻译 2014-03-23 16:39:09 · 2109 阅读 · 0 评论 -
欧拉函数
欧拉函数 phi(n) = 1~n中,gcd(i,n)=翻译 2014-04-27 16:41:27 · 1963 阅读 · 0 评论 -
矩阵
无聊写了个矩阵的模板,传上备用。Matrix preSum(Matrix A,int k){ if(k == 1) return A; Matrix sum = preSum(A,k/2); if(k&1) { Matrix Ak_1 = A.pow(k/2+1); return sum + Ak_1 +翻译 2012-09-21 10:40:58 · 658 阅读 · 0 评论 -
NYOJ 427 & HDU 1005 Number Sequence(找循环节)
题目链接:Click here~~f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.这也是月赛的一道题,题意很好理解,就是按照上面的公式求出f(n)。由于n很大,单靠循环做肯定会超时。我首先想到了用矩阵二分幂做。结果我推导那个矩阵用了很久,好不容易推导出来,结果还是wa了,由于矩阵知识掌握的并不牢固,所原创 2012-03-19 16:16:42 · 910 阅读 · 0 评论 -
Sexagenary Cycle(干支纪年)
给你一个年份,用干支纪年表示。干支纪年需要注意的有以下几点:1、公元后第一个甲子年是公元4年。2、干支纪年以60年为一循环。3、公元纪年的起点是从公元1年开始,也就是说,没有公元0年。4、对于公元前的年份可以转化成公元后的年份,由于没有公元0年,所以要先给公元前年份加1,然后加60的整数倍变成公元后的年份。#include int main(){ int z原创 2012-04-08 17:34:47 · 1612 阅读 · 0 评论 -
HDU 2082 找单词(母函数)
题目链接:Click here~~母函数第一题。大概能看懂了。#include #include const int MAX=50;int c1[MAX+5],c2[MAX+5],num[27];int main(){ int T; scanf("%d",&T); while(T--) { memset(c1,0,siz原创 2012-03-23 11:08:03 · 2390 阅读 · 0 评论 -
HDU 1028 Ignatius and the Princess III(母函数)
题目链接:Click here~~母函数第二题,整数划分。#include #include const int MAX=120;int main(){ int n,c1[MAX+5],c2[MAX+5]; while(~scanf("%d",&n)) { memset(c1,0,sizeof(c1)); mems原创 2012-03-23 11:27:43 · 1459 阅读 · 0 评论 -
NYOJ 520 & HDU 2136 Largest prime factor(筛法思想)
题目链接:Click here~~题意是求出某个数n的最大素因子是第几个素数。原以为是水题,没想到低估它了。开始时我先把100W内的素数打表,然后用欧拉函数的做法,对每个数挨个分解质因子,得到最大的素因子,输出它的下标。结果,悲剧的TLE了。后来小冰告诉我,可以用筛法的思想做,我顿悟了。做法如下:表中不在记录素数的值,而是直接记录素数的序数。从2开始循环,当遇到原创 2012-04-09 14:13:33 · 742 阅读 · 0 评论 -
HDU 2095 Find your present (2) (位异或)
题目链接:Click here~~题意:给你n个数字,已知只有一个数字出现了奇数次,其他数字都出现了偶数次,要求你找出这个特别的数字。解题思路:题目内存限制:1024K,所以不能简单地用数组存然后再处理。为了节约内存,可以用STL里面的set,map等容器。当容器里没有这个元素的时候,就插入这个元素,否则,删除这个元素。最后,容器中肯定只剩下一个元素,便是我们所原创 2012-04-12 22:27:05 · 5012 阅读 · 1 评论 -
HDU 4311&2 Meeting point-1&2(曼哈顿距离&&切比雪夫距离)
题目链接:Click here~~题意:平面上有n个点,定义两点间的距离D为 |x1-x2| + |y1-y2|。从n个点中找到一点,使其他点到此点的距离之和最小。解题思路:令点k为找到的点,ans = sum{D(i,k)} (i:1~n) 。即ans是一堆含有绝对值的式子相加,那么,有没有好的方法可以快速求出这些带绝对值的式子呢?由于式中的x与y之间原创 2012-07-28 15:39:20 · 3218 阅读 · 1 评论 -
HDU 1060 Leftmost Digit(求n^n的最左位)
题目链接:Click here~~题意:求 n^n 的最左位是多少。解题思路:对于十进制的任意一个数 n,都可以变成 n = a * 10^m(1)观察上面的式子不难发现,n 的首位仅由a的整数部分决定。所以我们可以想办法先把a的值求出来,再对a的值取整,就是我们所要的结果。首先,我们对式子两边同时取以10为底的对数,即 log10(n) = log10(a)原创 2012-04-03 21:33:57 · 1267 阅读 · 0 评论 -
HDU 1018 Big Number(求n!的位数)
题目链接:Click here~~题意是要求出n的阶乘的位数。Stirling公式: lim(n→∞) (n/e)^n*√(2πn) / n! = 1根据此式,对等式两边同取以10为底的对数即可得到log10(n!)的值,再对此值取上整即可得到n!的位数。需要注意的是,式中有自然对数e,e是未知的。所以可以通过换底公式,log10(n!) = log(n!) /原创 2012-04-01 15:28:09 · 687 阅读 · 0 评论 -
POJ 1006 Biorhythms(中国剩余定理)
题目链接:Click here~~题意:每个人有三个不同的巅峰,给出它们各自出现的时间以及周期,问之后什么时间会第一次遇到三个巅峰同时出现的情况。解题思路:关于中国剩余定理,这篇文章讲的不错 : http://www.cnblogs.com/walker01/archive/2010/01/23/1654880.html大体思路是先构造一个特殊解,然原创 2012-09-30 08:58:43 · 1358 阅读 · 0 评论 -
HDU 4320 Arcane Numbers 1(12年多校3-数学)
题目链接:Click here~~题意:给你任意一个 p 进制下有限位数的数 n,问是否一定能转化成 q 进制下有限位数的数字 m。解题思路:显然若 n 为整数,一定可以,那么我们下面分析一下 n 含小数的情况。设 n 的小数部分为 x,且小数部分共 k 位,第 i 位上的数字为 ai。那么我们可以将 x 表示成下面式子的形式:。原创 2012-09-12 17:52:15 · 1147 阅读 · 0 评论 -
URAL 1204 Idempotents(扩展欧几里得)
题目链接:Click here~~题意:给你一个数 n,保证 n 是两个素数 p、q 相乘的乘积,问存在几个 x ,使得 x*x = x (mod n)。(x 解题思路:首先要弄懂符号 (mod n) 的意思,若 a = b(mod n),意思是 a 和 b 分别除以 c 以后余数相同。这种式子一般可以写成 a + k*n = b的形式。于是本题原创 2012-09-13 15:51:25 · 989 阅读 · 0 评论 -
HDU 1796 How many integers can you find(容斥原理)
题目链接:Click here~~题意:给你一个集合M,里面最多有10个非负数,问1~n-1中一共有多少个数可以被其中一个整除。解题思路:比较简单的容斥吧,可惜我WA了一个下午。很容易的想到,ans = sum{ 整除一个的数 } - sum{ 整除两个的数 } + sum{ 整除三个的数 } - …… 。而整除 k 个数的数可以表示成 lcm(原创 2012-10-10 21:00:03 · 1650 阅读 · 0 评论 -
POJ 3233 Matrix Power Series(矩阵求A+…+A^k 的和)
题目链接:Click here~~题意:给你一个n*n的矩阵 A,求出 A + A^2 + … + A^k 的值。解题思路:需用用到两次二分。考虑 k 为奇数和偶数两种情况。1、奇数:A + A^2 + … + A^k = 【A + A^2 + … + A^(k/2)】 + A^(k/2+1) + A^(k/2+1)*【A + A^2 + … +原创 2012-09-21 10:58:45 · 1574 阅读 · 0 评论 -
生成函数(母函数)
生成函数,英文是Generating Function。恕本人不才,本文只介绍生成函数的其中一种用法。生成函数是说,构造这么一个多项式函数g(x),使得x的n次方系数为f(n)。对于母函数,我看到最多的是这样两句话:1.“把组合问题的加法法则和幂级数的乘幂对应起来。”2.“把离散数列和幂级数一 一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定原创 2012-03-23 10:24:56 · 5576 阅读 · 6 评论 -
关于负数取模的问题
若a a mod b = a%b+b。因为 c 语言中负数取模的结果等于对应正数取模的相反数,则 a % b = - ( (-a) % b ),而右式等价于 -(-a - nb),直到 -a - nb > 0 且 -a - (n+1)b 又 a mod b = a + mb,直到a + mb > 0 且 a + (m-1)b 所以 a mod b =原创 2012-09-15 09:03:15 · 3590 阅读 · 0 评论 -
HDU 2588 GCD(欧拉函数)
题目链接:Click here~~题意:解题思路:题目不难原创 2014-04-27 21:27:21 · 2311 阅读 · 0 评论