组合数学——cf991E
/*
如果有某一位,那么这一位必须存在
枚举所有情况,计算每种情况时0额外另算
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll ans,n,cnt[],F[],a[]; ll calc(){
ll res=,len=;
for(int i=;i<=;i++)len+=a[i];
res=F[len];
for(int i=;i<=;i++)
res/=F[a[i]];
for(int i=;i<=a[];i++)
res*=(len+i-);
res/=F[a[]];
return res;
} int main(){
F[]=;
for(ll i=;i<=;i++)F[i]=i*F[i-]; cin>>n;
while(n){
cnt[n%]++;
n/=;
} for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
for(a[]=(cnt[]!=);a[]<=cnt[];a[]++)
ans+=calc();
cout<<ans<<'\n';
}
组合数学——cf991E的更多相关文章
- poj 3734 Blocks 快速幂+费马小定理+组合数学
题目链接 题意:有一排砖,可以染红蓝绿黄四种不同的颜色,要求红和绿两种颜色砖的个数都是偶数,问一共有多少种方案,结果对10007取余. 题解:刚看这道题第一感觉是组合数学,正向推了一会还没等推出来队友 ...
- 组合数学or not ---- n选k有重
模板问题: 1. 取物品 (comb.pas/c/cpp) [问题描述] 现在有n个物品(有可能相同),请您编程计算从中取k个有多少种不同的取法.[输入] 输入文件有两行,第一行包含两个整数n,k(2 ...
- 组合数学(全排列)+DFS CSU 1563 Lexicography
题目传送门 /* 题意:求第K个全排列 组合数学:首先,使用next_permutation 函数会超时,思路应该转变, 摘抄网上的解法如下: 假设第一位是a,不论a是什么数,axxxxxxxx一共有 ...
- uestc1888 Birthday Party 组合数学,乘法原理
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25539#problem/G 题目意思: 有n个人,每个人有一个礼物,每个人能拿 ...
- UVA 11076 Add Again 计算对答案的贡献+组合数学
A pair of numbers has a unique LCM but a single number can be the LCM of more than one possiblepairs ...
- POJ3252——Round Number(组合数学)
Round Numbers DescriptionThe cows, as you know, have no fingers or thumbs and thus are unable to pla ...
- HDU4675【GCD of scequence】【组合数学、费马小定理、取模】
看题解一开始还有地方不理解,果然是我的组合数学思维比较差 然后理解了之后自己敲了一个果断TLE.... 我以后果然还得多练啊 好巧妙的思路啊 知识1: 对于除法取模还需要用到费马小定理: a ^ (p ...
- hdu 4810 Wall Painting (组合数学+二进制)
题目链接 下午比赛的时候没有想出来,其实就是int型的数分为30个位,然后按照位来排列枚举. 题意:求n个数里面,取i个数异或的所有组合的和,i取1~n 分析: 将n个数拆成30位2进制,由于每个二进 ...
- CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
随机推荐
- Linux下NODE配置NODE_PATH变量
在当我们使用了npm install express -g安装之后的,会安装在全局目录下,但是如果直接用Node来启动程序的话,是无法发现这个包的,原因就在于NODE_PATH这个环境变量设置的不正确 ...
- notepad++ remove duplicate
step1 to sort and remove space. Since Notepad++ Version 6 you can use this regex in the search and r ...
- ifame问题
问题描述:在div中添加了点击事件,div中嵌套着一个iframe,父类的div事件全部都会被失效, 解决办法:给iFrame添加css pointer-events : none; 去掉了ifram ...
- java创建一个空白zip
String zipath = localpath+zipname+".zip"; public static void createNewzip(String zipath) t ...
- linux服务器创建docker
关于Docker在Linux服务器中的安装以及使用1 安装: yum install docker 2 启动: systemctl start docker.service 3.加入开机启动: sys ...
- Nginx集群配置启动报错
- js简单图片切换
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...
- bzoj1006题解
[题意分析] 给你一张弦图,求图的最小染色数. [解题思路] 这篇讲稿已经讲得很详尽了.. 直接求完美消除序列,然后倒着染色即可.复杂度O(n2+nm). [参考程序] 求完美消除序列我是用的MCS( ...
- 线段树区间离散化——牛客多校E
这个区间离散化把我调死了.. 总之用vector来离散化,然后叶子节点维护的是一段区间,记录下每个叶子结点的起点+长度 千万要注意下标不能弄错! #include<bits/stdc++.h&g ...
- Delphi产生任务栏图标【TNotifyIconData】(转载)
一.新建一个应用程序:File->New Applicaton 在Interface部分要放在Uses Message之后,定义一个消息常量:const WM_NID=WM_USER+1000; ...