luogu2518 [HAOI2010] 计数】的更多相关文章

题目大意 给出一个数字$n$,求满足下列条件的数$x$的个数: $x<n$ 对于来自于$x$十进制各个数位上的非零数字,它们的种类与个数都与$n$的相同. 思路 入手点 设$n$有$t$位数字,如果满足上述条件的$x$的位数$t'$比$t$小,那相当于$x$前面含有$t-t'$个前缀0!因此如果我们不考虑第1条,那么$x$就是由$n$各个位上数字包括0组成的全排列. 考虑第一条 我们定义$a_i$为数$n$在第$i$位上的数字,$b_i$则是$x$的.$f(m)$为当$n$与$x$在$m$以上的…
[BZOJ2425][HAOI2010]计数(组合数学) 题面 BZOJ 洛谷 题解 很容易的一道题目. 统计一下每个数位出现的次数,然后从前往后依次枚举每一位,表示前面都已经卡在了范围内,从这一位开始比目标小. 对于长度小于当前数的个数,我们可以默认它们有前导零就行了. #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define ll long long ll C…
[HAOI2010]计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 451  Solved: 289[Submit][Status][Discuss] Description 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现在给定一个数,问在这个数之前有多少个数.(注意这个数不会有前导0).   I…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2425 其实能够构成的数就是原数的排列(算前导0),然后组合计数一下就可以了. #include<cstring> #include<iostream> #include<algorithm> #include<cstdio> #define rep(i,l,r) for (int i=l;i<=r;i++) #define down(i,l,r)…
题目链接 \(Click\) \(Here\) 很好很妙的一个题目. 其实可以生成的数字,一定是原数的一个排列,因为\(0\)被放在前面就可以认为不存在了嘛~.也就是说现在求的就是全排列中所有小于该数的排列.对每一位我们考虑两类情况: 第一类情况 : 前 \(i\) 位上均相等, 且第 \(i\) 位上当前数是 \(j\) (比 \(arr_i\) 小) 这一位已经满足了约束条件小于,那么后面就可以放开了搞.也就是说后\(n-i\)个数形成的全排列中,每一个排列都是可以使用的,即答案加上一个全排…
http://www.lydsy.com/JudgeOnline/problem.php?id=2425 题意转化: 给定一个集合S,求S的全排列<给定排列 的排列个数 从最高位开始逐位枚举确定 没有枚举到的位就是可重复集合的全排列 公式是 n!/ (n1!*n2!……) 高精? 用它的推导公式:C(n,n1)*C(n-n1,n2)*C(n-n1-n2,n3)…… #include<cstdio> #include<cstring> #include<iostream&…
Description 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现在给定一个数,问在这个数之前有多少个数.(注意这个数不会有前导0). Input 只有1行,为1个整数n. Output 只有整数,表示N之前出现的数的个数. Sample Input 1020 Sample Output 7 HINT n的长度不超过50,答案不超过263-1.…
原题题意也就是给的数的全排列小于原数的个数. 我们可以很容易的想到重复元素的排列个数的公式. 但是我们发现阶乘的话很快就会爆long long啊(如果您想写高精请便) 之后我就尝试质因数分解....但是遗憾的是太蒻了,没有成功,还是爆了.20分惨惨.最后也没有找出来哪里错了. 最后蒟蒻只好参考题解了..... 之后我们再一考虑,会发现其实我们不需要重复元素排列个数的公式,我们只需要按照组合数的思想做即可. 假设我们现在有m个位置可以摆放,我们先放0,个数就是\(C_m^{cnt[0]}\),之后…
题面: 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现在给定一个数,问在这个数之前有多少个数.(注意这个数不会有前导0). 样例输入:1020     样例输出:7 题解: 刚看到这道题的时候有点懵,,,,, 其实仔细观察一下发现这题可以用组合做. 注意到0的个数是不限的, 而且如果位数小于给定n的话,肯定可以随便搭配, 所以直接加上给定数的有效位+…
https://www.lydsy.com/JudgeOnline/problem.php?id=2425 https://www.luogu.org/problemnew/show/P2518 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现在给定一个数,问在这个数之前有多少个数.(注意这个数不会有前导0). 题意看了半天终于看懂了. 我们从高位到低…