Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目鏈接
題意:給你三個數(shù)n,m,k;讓你構(gòu)造出一個nm的矩陣,矩陣元素只有兩個值(1,-1),且滿足每行每列的乘積為k,問你多少個矩陣。
解法:首先,如果n,m奇偶不同,且k=-1時,必然無解:
設n為奇數(shù),m為偶數(shù),且首先要滿足每行乘積為-1,那么每行必然有奇數(shù)個-1,那么必然會存在有偶數(shù)個-1.。滿足每列乘積為-1,那么每列必然有奇數(shù)個-1,那么必然存在奇數(shù)個-1.互相矛盾。
剩下的就是有解的情況了。
我們可以在n-1m-1的矩陣中隨意放置-1,1.在最后一列和最后一行控制合法性即可。
#include<bits/stdc++.h>#define LL long long
#define fi first
#define se second
#define mp make_pair
#define pb push_backusing namespace std;LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
LL mod=1e9+7;
int main(){ios::sync_with_stdio(false);LL n ,m ,k;cin>>n>>m>>k;if(k==-1&&(n+m)%2==1)return cout<<0,0;cout<<powmod(powmod(2,n-1,mod),m-1,mod);return 0;
}
轉(zhuǎn)載于:https://www.cnblogs.com/pubgoso/p/10759713.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有颗蛀牙要补牙,大概要多少钱?
- 下一篇: Windows LTSC、LTSB、Se