传送门

分析

首先我们发现$k$位数实际就是一位的情况的$k$次方

考虑一开始的总方案数是$2^{nm}$

我们每一次枚举其中有$i$行$j$列

对于这种情况的容斥系数为$(-1)^{i+j}$

方案数为$C_n^i*C_m^j*2^{(n-i)(m-j)}$

表示$n$行选$i$行,$m$列选$j$列,除此以外的点随便填有多少种方案

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const long long mod = 1e9+;
long long c[][],n,m,k;
inline void getc(){
int i,j;
c[][]=;
for(i=;i<=;i++)
c[i][]=c[i][i]=;
for(i=;i<=;i++)
for(j=;j<i;j++)
c[i][j]=(c[i-][j]+c[i-][j-])%mod;
return;
}
inline long long pw(long long x,long long p){
long long res=;
x%=mod;
while(p){
if(p&)res=res*x%mod;
x=x*x%mod;
p>>=;
}
return res;
}
int main(){
long long i,j,t;
scanf("%lld",&t);
getc();
while(t--){
scanf("%lld%lld%lld",&n,&m,&k);
long long Ans=pw(,n*m);
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(i==&&j==)continue;
if((i+j)%){
Ans=(Ans+mod-c[n][i]*c[m][j]%mod*pw(,(n-i)*(m-j))%mod)%mod;
}else {
Ans=(Ans+c[n][i]*c[m][j]%mod*pw(,(n-i)*(m-j))%mod)%mod;
}
}
printf("%lld\n",pw(Ans,k));
}
return ;
}

最新文章

  1. opengl入门学习
  2. 五、BLE(下)
  3. BZOJ 3631 【JLOI2014】 松鼠的新家
  4. linux权限管理_文件特殊权限
  5. 用QT创建新风格: QStyle
  6. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)0-------通过应用程序域AppDomain加载和卸载程序集
  7. HTML+js+css实现点击图片弹出上传文件窗口的两种思路
  8. 51单片机C语言学习笔记6:51单片机C语言头文件及其使用
  9. Javascript高级编程学习笔记(94)—— Canvas(11) 合成
  10. Java提高班(五)深入理解BIO、NIO、AIO
  11. J - 青蛙的约会(扩展欧几里得)
  12. 洛谷P4358密钥破解 [CQOI2016] 数论
  13. c# 后台post,包含file文件
  14. ansible自动化工具安装和简单使用
  15. CSS文字过多显示省略号
  16. beego 返回 json 响应
  17. Inversions SGU - 180
  18. SQL端通过脚本判断文件夹是否存在 并创建
  19. c语言中的输入
  20. request.getDispatcher().forward(request,response)和response.sendRedirect()的区别

热门文章

  1. 201621123014《Java程序设计》第七周学习总结
  2. json与DataTable相互转换
  3. canvas基础学习(四)
  4. Leetcode 969. Pancake Sorting
  5. 在Windows 7上安装ACE 6.1.0
  6. BZOJ1901:Dynamic Rankings
  7. 用Python+Django1.9在Eclipse环境下开发web网站
  8. MQTT事件回调流程
  9. 给JavaScript文件传入参数的几种方法
  10. (转)详解C#中的反射