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 ...
随机推荐
- Fréchet Inception Distance(FID)
计算 IS 时只考虑了生成样本,没有考虑真实数据,即 IS 无法反映真实数据和样本之间的距离,IS 判断数据真实性的依据,源于 Inception V3 的训练集 ------ ImageNet,在 ...
- NO3 cat-xargs-cp-mv-rm-find命令
·cat #查看文件内容 eg:cat oldboy.txt·xargs #从标准输入获取内容创建和执行命令 -n 加数字:分组 ·cp ...
- 154. 寻找旋转排序数组中的最小值 II
转跳点:--\(˙<>˙)/-- 原本打算大年三十十一起写完的,结果这篇拖到了年初一…… 这道题比刚刚那道,麻烦一点,因为有重复,所以我们需要考虑重复的情况,就是刚刚的两种情况变成了三种: ...
- 小技巧:使用命令行打开vscode 以及 sublime 工具
vscode手动打开vscode command + shift + p 打开命令面板(或者点击菜单栏 查看>命令面板)输入 shell 选择 install code command in P ...
- eclipse中使用jstl
错误提示为"can not find the tag library for http://java.sun.com/jsp/jstl/core" 这是我在练习把axis2和普通j ...
- 《新标准C++程序设计》4.1(C++学习笔记12)
运算符重载的概念和原理 一.运算符重载的需求 C++预定义的“+.-. * ./.%. ^ .&.~.!.|. = .<< >>.!= ”等运算符,只能用于基本数据类型 ...
- 三、ReactJS、jsx、 Component 特性
reactjs特性: 基于组件(Component)化思考 用 JSX 进行声明式(Declarative)UI 设计 使用 Virtual DOM Component PropType 错误校对机制 ...
- Perl 笔试题2 -- 统计单词频次
Nvidia 2019 perl 笔试题 统计一个文件内单词的频次并排序 文本如下: "ALL happy families resemble one another; every unha ...
- oracle中设置主键
1.创建表 .创建表 create table "c_user"( "id" number primary key, "username" ...
- EUI库 - 自动布局
自适应流式布局 width="100%" top left right horizontalCenter=0 失效验证机制 这些异步过程都封装好了,我们只需要关注那一对方法: ...