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

题目: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)…
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.…
题目 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现在给定一个数,问在这个数之前有多少个数.(注意这个数不会有前导0). 输入格式 只有1行,为1个整数n. 输出格式 只有整数,表示N之前出现的数的个数. 输入样例 1020 输出样例 7 提示 n的长度不超过50,答案不超过\(2^{63}-1\). 题解 如果我们看做把0删除看做把0前导,那么问题…
[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…
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). 题意看了半天终于看懂了. 我们从高位到低…
题目链接 \(Click\) \(Here\) 很好很妙的一个题目. 其实可以生成的数字,一定是原数的一个排列,因为\(0\)被放在前面就可以认为不存在了嘛~.也就是说现在求的就是全排列中所有小于该数的排列.对每一位我们考虑两类情况: 第一类情况 : 前 \(i\) 位上均相等, 且第 \(i\) 位上当前数是 \(j\) (比 \(arr_i\) 小) 这一位已经满足了约束条件小于,那么后面就可以放开了搞.也就是说后\(n-i\)个数形成的全排列中,每一个排列都是可以使用的,即答案加上一个全排…
原题题意也就是给的数的全排列小于原数的个数. 我们可以很容易的想到重复元素的排列个数的公式. 但是我们发现阶乘的话很快就会爆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的话,肯定可以随便搭配, 所以直接加上给定数的有效位+…