Codeforces 894B - Ralph And His Magic Field

时间:2021-01-28 13:38:00

894B - Ralph And His Magic Field

思路:

当k为1时,如果n和m奇偶性不同,那么没有答案。

可以证明,在其他情况下有答案,且答案为2^(n-1)*(m-1),因为前n-1行和m-1列确定后,最后一列和最后一行可以确定,且确定的最后一格不矛盾。

可以采用在全为1的格子中把一些1换成-1的方法来证明以上两条结论。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define mem(a,b) memset(a,b,sizeof(a)) const int MOD=1e9+;
ll qpow(ll n,ll k)
{
ll ans=;
while(k)
{
if(k&)ans=(ans*n)%MOD;
n=(n*n)%MOD;
k>>=;
}
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
ll m,n;
int k;
cin>>m>>n>>k;
if(k==)
{
cout<<qpow(,((m-)%(MOD-))*((n-)%(MOD-)));
}
else
{
if((m+n)&)
{
cout<<<<endl;
return ;
}
cout<<qpow(,((m-)%(MOD-))*((n-)%(MOD-)));
}
return ;
}