結果
問題 | No.1870 Xor Matrix |
ユーザー |
![]() |
提出日時 | 2022-03-11 23:03:11 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 194 ms / 2,000 ms |
コード長 | 1,712 bytes |
コンパイル時間 | 1,673 ms |
コンパイル使用メモリ | 169,104 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-16 03:24:54 |
合計ジャッジ時間 | 3,558 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define rep(i,n) for(int i=0;i<n;i++)#define rng(i,x,n) for(int i=x;i<n;i++)#define per(i,n) for(int i=n-1;i>=0;i--)#define fi first#define se second#define pb push_back#define sz(a) (int)a.size()#define vec(...) vector<__VA_ARGS__>#define _3HspL4A ios::sync_with_stdio(0),cin.tie(0)typedef long long ll;using pii=pair<int,int>;using vi=vec(int);void print(){cout<<"\n";}template<class T,class...E>void print(const T&v,const E&...u){cout<<v<<' ',print(u...);}// e//snuke's mod inttemplate <ll mod>struct modint{ll x; // typedef long long ll;modint(ll x=0):x((x%mod+mod)%mod){}modint operator-()const{return modint(-x);}modint& operator+=(const modint a){if((x+=a.x)>=mod) x-=mod; return *this;}modint& operator-=(const modint a){if((x+=mod-a.x)>=mod) x-=mod; return *this;}modint& operator*=(const modint a){(x*=a.x)%=mod; return *this;}modint operator+(const modint a)const{modint res(*this); return res+=a;}modint operator-(const modint a)const{modint res(*this); return res-=a;}modint operator*(const modint a)const{modint res(*this); return res*=a;}modint pow(ll n)const{modint res=1,x(*this);while(n){if(n&1)res*=x;x*=x;n>>=1;}return res;}modint inv()const{return pow(mod-2);}};using mint=modint<998244353>;signed main(){_3HspL4A;int n,m;cin>>n>>m;vi a(n);rep(i,n){cin>>a[i];}vi b(m);rep(i,m){cin>>b[i];}int sxor=0;for(auto x:a){sxor^=x;}int nsxor=0;for(auto x:b){sxor^=x;}if(nsxor!=sxor){print("0");return 0;}mint ans=1;for(int i=0;i<n-1;i++){for(int j=0;j<20;j++){ans*=mint(2).pow(m-1);}}print(ans.x);//return 0;}