排列组合
林伏案
妖蛾子良多的范老爷
展开
-
uva1640(数位统计)
/*translation: 给出整数a,b。统计a和b之间的整数中,数字0,1,2,3...9出现的个数各是多少?并打印出来。solution: 1:由于数据范围太大,直接一次统计过去肯定超时,所以解决方法是按照每1000个数划分成一个区间,依次对每个区间进行统计 累加。这样以来就能将10^8的数据量变成10^6的数据量,1s内绰绰有余。 2:定义千位及以上的为高位数,以下的为低位数原创 2016-10-09 11:26:18 · 536 阅读 · 0 评论 -
uva10820(欧拉函数,排列组合)
/*translation: 给定一个数n,任意两个元素组成的二元组(x,y).其中xy均小于n。任意两个二元组之间定不存在 (k*xi, k*yi) = (xj, yj);问这样的二元组有多少个。solution: 排列组合,欧拉函数 满足条件的二元组的两个元素之间肯定互素,如果两个元素不互素,肯定存在一个整数k使得有二元组 (x/k, y/k)。与题意相反。所以利用欧拉函数很容原创 2016-09-26 16:47:25 · 473 阅读 · 0 评论 -
uva1262(排列计数的编码解码)
/*translation: 给出两个6行5列的矩阵,根据这两个矩阵可以推出来一个5位密码串,没一位上的字母在两个矩阵中相应的列中必须出现 求按字典序的第k个密码串是什么?solution: 排列计数的编码解码 如1,2,3,4的全排列,共有4!种,求第10个的排列是(从1计 起)? 先试首位是1,后234有3!=6种<10,说明首位1偏小,问题转换成 求2开头的第(10-6=4)原创 2016-09-27 23:39:52 · 256 阅读 · 0 评论 -
poj3252(排列组合计数,数位计数)
/*translation: 给出两个数,求这两个数形成的闭区间内round number的个数。一个数转换成二进制的时候其中0的个数比1多的 或者相等的称为round number。solution: 排列组合。 要求闭区间内的round number个数,只需要求出0~s的个数和0~t的个数,将二者相减即可得到答案。 关于个数的计算,可以采用如下方法。当一个数为n位的二进制时,只原创 2016-10-14 21:48:17 · 428 阅读 · 0 评论 -
poj3421(多重集排列,唯一分解定理)
/*translation: 给出一个数,求能够形成的x数链最长是多少?(x数链是指以1开始,以n结尾,其中任意相邻的两个数,前面的数都能整除后面)solution: 多重集排列计数,唯一分解定理 由x数链的性质可以发现,将n分解为其质因数相乘的形式后,数链中任何一个数必定是这些质因数的某个组合,且任意相邻的2个质因数 中后面的数必定是在前面的数的质因数的组合的基础上再乘上另外的一个质原创 2016-10-27 21:05:39 · 692 阅读 · 0 评论