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

Input
1 3
Output
7
Input
2 2
Output
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 (排列组合+快速幂取模)的更多相关文章

  1. BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 10503  Solved: 4558[Submit][Status ...

  2. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  3. .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...

  4. 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  5. 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  6. 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  7. hdu1521 排列组合(指数型母函数)

    题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数.         (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...

  8. [leetcode] 题型整理之排列组合

    一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ...

  9. 排列组合算法(PHP)

    用php实现的排列组合算法.使用递归算法,效率低,胜在简单易懂.可对付元素不多的情况. //从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m ...

随机推荐

  1. Hive 中的 order by, sort by, distribute by 与 cluster by

    Order By order by 会对输入做全排序, 因此只有一个Reducer(多个Reducer无法保证全局有序), 然而只有一个Reducer, 会导致当输入规模较大时, 消耗较长的计算时间. ...

  2. JAVA 使用模板创建DOCX文档)(XDocService 使用报错条数过多报错链接不上服务器)

    详细解释https://xdoc.iteye.com/blog/2399451 https://xdoc.iteye.com/  导入 XDocService.jar   我说一下我遇到的问题 我从数 ...

  3. 《YouTube 网站的架构演进》阅读笔记

    概述 YouTube 在国内是个404网站,需要翻墙得见,这是有用的废话,先铺垫一下. 从全球网站来看,它仅次于母公司 Google,全球排名位列第2.每天超过5亿以上视频播放量,平均每个用户点击10 ...

  4. 启动Eureka出现错误:Archive for required library in project cannot be read or is not a valid ZIP file

    To fix issues like that, let Maven download the files again: Delete the folder D:/mypath/.m2/reposit ...

  5. 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类

    import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...

  6. H5页面,百度地图点击事件

    需求:用户点击地图的时候获取地址街道,编码等详细信息. 然后看百度API文档,看到了click事件,关键时候还是需要看文档的. 实现 这样子虽然在浏览器的手机模拟器下是没有问题的 但是放在机器上测试的 ...

  7. centos-6更新yum源(163)

    更新前请先备份原来的repo文件,养成好习惯 cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.bak 到http://mirrors ...

  8. gerrit 版本下载

    链接:https://gerrit-releases.storage.googleapis.com 如下载gerrit-2.12.2.war https://gerrit-releases.stora ...

  9. 064-PHP函数中局部变量在函数外不可使用

    <?php function print_num(){ //定义函数 $x=6; //在函数中定义变量 } print_num(); //调用函数 echo $x; ?>

  10. 类成员之迭代iter

    class B: def __init__(self,name,age): self.name = name self.age = age #创建迭代方法 def __iter__(self): re ...