A - Alice and the List of Presents (排列组合+快速幂取模)
https://codeforces.com/contest/1236/problem/B
Alice got many presents these days. So she decided to pack them into boxes and send them to her friends.
There are nn kinds of presents. Presents of one kind are identical (i.e. there is no way to distinguish two gifts of the same kind). Presents of different kinds are different (i.e. that is, two gifts of different kinds are distinguishable). The number of presents of each kind, that Alice has is very big, so we can consider Alice has an infinite number of gifts of each kind.
Also, there are mm boxes. All of them are for different people, so they are pairwise distinct (consider that the names of mm friends are written on the boxes). For example, putting the first kind of present into the first box but not into the second box, is different from putting the first kind of present into the second box but not into the first box.
Alice wants to pack presents with the following rules:
- She won't pack more than one present of each kind into the same box, so each box should contain presents of different kinds (i.e. each box contains a subset of nn kinds, empty boxes are allowed);
- For each kind at least one present should be packed into some box.
Now Alice wants to know how many different ways to pack the presents exists. Please, help her and calculate this number. Since the answer can be huge, output it by modulo 109+7109+7.
See examples and their notes for clarification.
Input
The first line contains two integers nn and mm, separated by spaces (1≤n,m≤1091≤n,m≤109) — the number of kinds of presents and the number of boxes that Alice has.
Output
Print one integer — the number of ways to pack the presents with Alice's rules, calculated by modulo 109+7109+7
Examples
- 1 3
- 7
- 2 2
- 9
Note
In the first example, there are seven ways to pack presents:
{1}{}{}{1}{}{}
{}{1}{}{}{1}{}
{}{}{1}{}{}{1}
{1}{1}{}{1}{1}{}
{}{1}{1}{}{1}{1}
{1}{}{1}{1}{}{1}
{1}{1}{1}{1}{1}{1}
In the second example there are nine ways to pack presents:
{}{1,2}{}{1,2}
{1}{2}{1}{2}
{1}{1,2}{1}{1,2}
{2}{1}{2}{1}
{2}{1,2}{2}{1,2}
{1,2}{}{1,2}{}
{1,2}{1}{1,2}{1}
{1,2}{2}{1,2}{2}
{1,2}{1,2}{1,2}{1,2}
For example, the way {2}{2}{2}{2} is wrong, because presents of the first kind should be used in the least one box.
就是说n种礼物,放进m个互不相同的箱子里。礼物数无限。随便放,但是需要保证每种礼物都至少出现一次,而且同一种不能出现在同一个箱子里。可以出现空箱子。题意就是如此,无奈自己太笨,推了好长时间,写了各种排列组合里的C啊,A啊的。其实出发点就错了,我们把从每单个种类的礼物拿出来看,对于一种礼物A的放法:对于每一种箱子只有两种情况,A存在或者不存在,那么m个箱子就有2^m种。但是题目说箱子不能全空,那么是2^m-1种。这样保证了每一种礼物必然出现,不用担心样例2那种 {2}{2}{2}{2} 情况了。总的公式就是(2^m-1)^n。套个快速幂取模模板就可以了。
- #include<iostream>
- #include<algorithm>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- typedef long long ll;
- const long long inf=1e9+;
- ll ac(ll a,ll b)
- {
- ll r=;
- while(b)
- {
- if(b%)
- r=(a*r)%inf;
- a=(a*a)%inf;
- b=b/;
- }
- return r;
- }
- int main()
- {
- ll n,m;
- while(cin>>n>>m)
- {
- ll k=ac(,m)-;
- cout<<ac(k,n)<<endl;
- }
- return ;
- }
A - Alice and the List of Presents (排列组合+快速幂取模)的更多相关文章
- BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10503 Solved: 4558[Submit][Status ...
- 学习sql中的排列组合,在园子里搜着看于是。。。
学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...
- 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合
本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...
- 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...
- 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成
本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...
- hdu1521 排列组合(指数型母函数)
题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数. (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...
- [leetcode] 题型整理之排列组合
一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ...
- 排列组合算法(PHP)
用php实现的排列组合算法.使用递归算法,效率低,胜在简单易懂.可对付元素不多的情况. //从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m ...
随机推荐
- Centos 8下普通用户增加root权限
问题: 解决: 重启Centos,使用root登陆:
- Mac 配置代码高亮 Git状态显示
Mac 一个为开发者量身定做的笔记本,分享给大家希望能帮助大家配置一个好的开发环境,好的开发环境才有好的心情Code. 首先进入到Home到目录一般默认打开的都是Home,如果不是输入 cd ~ 回车 ...
- 【LeetCode】合并两个有序数组
[问题] 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明:初始化 nums1 和 nums2 的元素数量分别为 m ...
- docker 后台运行和进入后台运行的容器
先创建并进入一个新的被命名为newos的新容器 docker run -it --name newos docker.io/centos #创建并指定端口号映射 docker run -d -p ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
- Java 二叉树深度 判断平衡二叉树
package cookie; public class BTreeDepthIsBalanced { int depth(BNode head) { if (head == null) { retu ...
- HDU 4862 JUMP 最小费用最大流
2014 多校的B题,由于我不怎么搞图论,当时碰到这个题目,我怎么想都没往网络流方面弄,不过网络流真的是个好东西,对于状态多变,无法用动规或者数据结构来很好表示的时候,非常有用 这个题目要求每个点一定 ...
- 实验吧-杂项-你没有见过的加密!(php srand()和rand()函数)
什么垃圾东西,弄半天,Windows上运行乱码,linux上7.3的php运行也是乱码(气死). 下载文件,查看内容 <?php function encrypt($str) { $crypte ...
- Bulma CSS - 开始
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 有数种方法可以 ...
- 使用TestNG-xslt美化测试报告
用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,自动生成的测试报告太难看了,所以我们又用了ReportNG来美化它.在 这里给大家再介绍一下比reportNG还要稍稍美观一点 ...