题目背景

WD整日沉浸在矩阵中,无法自拔……

题目描述

WD特别喜欢矩阵,尤其是\(01\)矩阵。

一天,CX给了WD一个巨大的\(n\)行\(m\)列的\(01\)矩阵,WD发现这个矩阵每行、每列的异或值都是\(0\).

CX随后就问道:“WD,你知道有多少\(01\)矩阵每行每列异或值都是\(0\)吗!?”WD当然不会这个问题,于是他来请教你。

由于答案可能很大,输出结果模\(998244353\)的值即可。

输入输出格式

输入格式:

第一行一个数\(T\),表示数据组数。

接下来\(T\)行每行两个数\(n,m\),分别表示询问的行数和列数。

输出格式:

共\(T\)行,每行一个数,表示答案\(mod\) \(998244353\)的结果。

输入输出样例

输入样例#1:

2
2 2
2 2018

输出样例#1:

2
851481696

说明

\(subtask1(11pts):~1\le T\le 10,~1\le n,m\le 4\)

\(subtask1(43pts):~1\le T\le 5,~1\le n\le 5,~1\le m\le 1,000\)

\(subtask1(46pts):~1\le T\le 100,000,~1\le n,m\le 10^9\)

思路:

题意是让你求满足n行m列且每行每列异或值都是0的矩阵个数,因为是异或,所以只可能有两个值,\(0\)或\(1\),那么每行可能的取值就是\(2^n\),然后最后值是0的情况是就是\(2^{n-1}\),然后扩展到列上,那么就是\((2^{n-1})^{m-1}\),然后自己再打打表就发现,显然这个式子是正确的,然后用快速幂求解,计算的过程中记得取模。

自己整理的题解

下面是我简洁的代码:

#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
#define mod 998244353
using namespace std;
ll n,m;
int t;
inline ll fpow(ll a, ll b) {
if(!b) return 1;
ll ans=1;
for(;b;b>>=1,a=(a*a)%mod)
if(b&1) ans=(ans*a)%mod;
return ans;
}
int main() {
scanf("%d",&t);
while(t--) {
scanf("%lld%lld",&n,&m);
printf("%lld\n",fpow(fpow(2,n-1),m-1));
}
return 0;
}

最新文章

  1. Windows 驱动程序工具包中的头文件
  2. Android之Activity之间跳转
  3. vc获取特殊路径(SpecialFolder)
  4. 遮罩、警告框/弹框 - EasyUI
  5. Subversion服务器搭建
  6. LeetCode &quot;Binary Tree Vertical Order&quot;
  7. Java中的观察者模式
  8. POJ 2828 (线段树 单点更新) Buy Tickets
  9. PHP中的替代语法
  10. Idea学习笔记
  11. Java thread中对异常的处理策略
  12. apt-key adv
  13. [Git]08 如何自动补全命令
  14. 给Lisp程序员的Python简介
  15. Go执行远程ssh命令
  16. kubernetes实战之运行aspnetcore webapi微服务 - kubernetes
  17. 【nginx】配置
  18. JEECG SSO kisso
  19. 前端开发环境webstorm搭建
  20. Eclipse中java文件生成jar文件的方法

热门文章

  1. pyget-资源与标签(Sprite、Label、Font)
  2. codeforces 631B B. Print Check
  3. 分享几个高效编写JS 的心得
  4. CodeForces - 1017E :The Supersonic Rocket (几何+KMP,判定凸包是否同构)
  5. HDU3037Saving Beans(组合数+lucas定理)
  6. DC/DC尖峰脉冲吸收电路
  7. 用WinDbg分析Debug Diagnostic Tool生成的Userdump文件
  8. jexus入门
  9. mac下无法远程桌面连接win10的解决办法
  10. SQL常用语法及规则-表格的操作