您的位置:首页 > 其它

codeforces B - Ralph And His Magic Field

2017-11-21 23:56 507 查看
题意:给你一个n*m的矩阵,矩阵由1或-1组成,然后问你有多少个矩阵的各行各列的乘积都等于k,其中k只能等于1或者-1。

ps:自己现在真的已经是a题选手了 ,一个b题想了巨久。。。

思路:那就是 每行和每列都保留最后一个不填,用来更改那一行那一列的值,其余位置都是想怎么填就怎么填,还有一个就是当n,m一个是奇数一个是偶数的是,如果k是-1那么答案就是0

上代码把:#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define mod 1000000007
inline int fast_mod(long long a,long long b)
{
long long ans = 1 ;
while(b)
{
// printf("b = %lld\n",b);
if(b&1) ans=(ans*a)%mod;
a = (a*a)%mod;
b>>=1;
}
return ans;
}
int main()
{
long long n,m,k;
while(cin>>n>>m>>k)
{
// printf("%lld %lld %lld \n",n%2,m%2,k);
if(n%2!=m%2&&k==-1)
{
puts("0");
}
else
{
int ans = fast_mod(fast_mod(2,n-1),m-1);
cout<<ans<<endl;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: