终于做出来了,激动。。。。

这道题隐藏得深啊,但若推导下来,就变简单了。

首先,一个集合的子集的个数为2^n=s。注意了,题目求的是有序集合组,并且每个集合是可以重复使用的,怎么办呢?这就要想到多重集合的排列问题了。

一个多重集合有k种元素,每种元素可以无限次使用,求r-排列个数。答案为 k^r个。

这样,我们使用容斥原理:

总个数为(2^n)^k个

包含一个元素的集合有序组为 C(n,1)(2^(n-1))^k

两个的为.....C(n,2)(2^(n-2))^k

。。。。

于是二项式定理+容斥原理公式化简即为(2^k-1)^n

#include <iostream>
#include <cstdio>
#include <algorithm>
#define MOD 1000000007
using namespace std;
typedef long long LL; LL quick(LL a,LL b){
a%=MOD;
LL ans=1LL;
while(b){
if(b&1)
ans=(ans*a)%MOD;
b>>=1;
a=(a*a)%MOD;
}
return ans;
} int main(){
LL n,k;
while(cin>>n>>k){
LL r=quick(2,k);
r=((r-1)%MOD+MOD)%MOD;
r=quick(r,n);
printf("%lld\n",r);
}
return 0;
}

  

最新文章

  1. LINQ系列:LINQ to SQL Select查询
  2. myeclipse连接oracle步骤
  3. sqlserverJDBC驱动链接
  4. Centos添加新硬盘、分区、格式化、自动挂载
  5. C#调用Java类
  6. show engine innodb status解读
  7. awk的使用备忘
  8. Linux 安装Nginx详细图解教程
  9. 常用上网增强类Chrome扩展(转)
  10. Python基础-类的探讨(class)
  11. 面向对象的特性-为String类型的变量扩展一个replaceAll()函数
  12. torch.utils.data.DataLoader()中的pin_memory参数
  13. Go外包 Go语言外包 Golang外包商 浅谈Go的全局变量和生命周期
  14. 数据分析三剑客之一numpy
  15. linux 学习之路:mkdir命令使用
  16. WiFi-ESP8266入门http(3-1)网页认证上网-post请求(原教程)
  17. 新版的 selenium已经放弃PhantomJS改用Chorme headless
  18. BZOJ1178 APIO2009 会议中心 贪心、倍增
  19. Book118免费下载文档方法
  20. vim 删除

热门文章

  1. [jQuery]文本框text变化事件
  2. auto_ptr的使用和注意
  3. 升级Xcode 导致插件失效的解决的方法
  4. Log使用
  5. Ubuntu(64位)编译Android源码常见错误解决办法
  6. isual Studio 2013编译ImageMagick---转
  7. BZOJ 3230 后缀数组+ST
  8. Java Servlet 配置
  9. 笔记--js实现异步
  10. ES6 | ES6新语法 在编码实践中的应用