CF1236B Alice and the List of Presents |数学

题意翻译
有nn种物品和mm个背包,每种物品有无限个,现将若干个物品放到这些背包中,满足:

1、每个背包里不能出现相同种类的物品(允许有空背包);

2、在所有的mm个背包中,每种物品都出现过。

求方案数,对10^9+7取模。


转载至 风华正茂

这不是一道水题吗?

尽管比赛时推了20min,我太蒟了。

假如这道题目没有“每种物品都出现过”的限制,那么它的答案就是 2^nm

那么加上这个限制呢,每种物品必须要放,只用将每种物品的方案减一即可,也就是 2^m-1

所以用乘法原则得到 ans=(2m-1)n

快速幂都会吧

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod=1e9+7;
#define int long long
int n,m;
inline int ksm(int x,int y){
	int ans=1;
	while(y){
		if(y&1)ans=(ans*x)%mod;
		x=x*x%mod;
		y>>=1;
	}
	return ans;
}
signed main(){
	cin>>n>>m;
	printf("%lld\n",ksm(ksm(2,m)-1,n));
}
posted @ 2019-10-30 21:19  白木偶君  阅读(186)  评论(0编辑  收藏  举报