CF894B Ralph And His Magic Field
题目链接:http://codeforces.com/contest/894/problem/B
题目大意:
往一个 \(n \times m\) 的网格中填数字 \((1 \le n,m \le 10^{18})\),使得网格的任意一行和任意一列的乘积均为 \(k (k \in \{-1, 1\}).\)问有多少种方案。
知识点: 费马小定理、快速幂
解题思路:
1、网格中的数字,要么是 1,要么是 -1;
2、如果网格中 \((n-1) \times (m-1)\) 的子网格上的数字已经确定,那么最后一行和最后一列上的数字也随之确定,整个网格亦即随之确定,因此填数字的方案数为 \(2^{(n-1)(m-1)}\). 要理解这个结论为什么成立,可以试着想象:当网格中 \((n-1) \times (m-1)\) 的子网格上填满 1(此时最后一行和最后一列也已经确定),如果改变子网格上的数字,只要随之改变外层的数字即可。但是,在一种情况下答案为 0 :当 \(k = -1\) 并且 n 和 m 的奇偶性不同时。对于这一点,我们可以这么分析:
假设 \(k = -1, n = 1, m = 2x (x \in N)\),答案显然为 0;
则 \(k = -1, n = 2, m = 2x + 1 (x \in N)\),答案为 0;
由此类推,\(k = -1, n = 1 + y, m = 2x + y (x, y \in N)\),答案亦为 0.
AC代码:
#include <iostream>
#include <cstdio> using namespace std;
typedef long long ll;
const ll mod = ; ll Fast_Power(ll t){//快速幂
ll ret=;
ll a=;
while(t){
if(t&) ret=ret*a%mod;
t>>=;
a=a*a%mod;
}
return ret;
}
int main()
{
ll n,m;
int k;
scanf("%lld%lld%d",&n,&m,&k);
if(k==-&&(n%!=m%))
printf("0\n");
else{
ll ans=Fast_Power(((n-)%(mod-))*((m-)%(mod-))%(mod-))%mod;//此处应用费马小定理
printf("%lld\n",ans);
}
return ;
}
CF894B Ralph And His Magic Field的更多相关文章
- codeforces #447 894A QAQ 894B Ralph And His Magic Field 894C Marco and GCD Sequence
A.QAQ 题目大意:从给定的字符串中找出QAQ的个数,三个字母的位置可以不连续 思路:暴力求解,先找到A的位置,往前扫,往后扫寻找Q的个数q1,q2,然 后相乘得到q1*q2,这就是这个A能够找到的 ...
- codeforces 894B - Ralph And His Magic Field - [数学题]
题目链接:https://cn.vjudge.net/problem/CodeForces-894B Ralph has a magic field which is divided into n × ...
- Codeforces 894B - Ralph And His Magic Field
894B - Ralph And His Magic Field 思路: 当k为1时,如果n和m奇偶性不同,那么没有答案. 可以证明,在其他情况下有答案,且答案为2^(n-1)*(m-1),因为前n- ...
- Codeforces 894.B Ralph And His Magic Field
B. Ralph And His Magic Field time limit per test 1 second memory limit per test 256 megabytes input ...
- Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field【数论/组合数学】
B. Ralph And His Magic Field time limit per test 1 second memory limit per test 256 megabytes input ...
- Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学
题目链接 题意:给你三个数n,m,k;让你构造出一个nm的矩阵,矩阵元素只有两个值(1,-1),且满足每行每列的乘积为k,问你多少个矩阵. 解法:首先,如果n,m奇偶不同,且k=-1时,必然无解: 设 ...
- 【Codeforces Round #447 (Div. 2) B】Ralph And His Magic Field
| [链接] 我是链接,点我呀:) [题意] 给你一个n*m矩阵,让你在里面填数字. 使得每一行的数字的乘积都为k; 且每一列的数字的乘积都为k; k只能为1或-1 [题解] 显然每个位置只能填1或- ...
- Codeforces Round #447 (Div. 2) 题解 【ABCDE】
BC都被hack的人生,痛苦. 下面是题解的表演时间: A. QAQ "QAQ" is a word to denote an expression of crying. Imag ...
- Codeforces Round #447 (Div. 2)
我感觉这场CF还是比较毒的,虽然我上分了... Problem A QAQ 题目大意:给你一个由小写字母构成的字符串,问你里面有多少个QAQ. 思路:找字符串中的A然后找两边的Q即可,可以枚举找Q, ...
随机推荐
- js 实现淘宝放大镜功能,可更改配置参数 带完整版解析代码[magnifier.js]
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写淘宝放大镜效果 基本功能: 运 ...
- 【抓包工具】tcpdump
tcpdump - dump traffic on a network 根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支 ...
- 原生JS中获取位置的方案总结
获取鼠标当前位置 clientY.clientX: 鼠标当前位置 相对于 浏览器可视区域顶部.浏览器可视区域左部 的位置: pageY.pageX: 鼠标当前位置 相对于 文档顶部.文档左部的位置: ...
- js的call方法
obj1.method.call(obj2,arg1,arg2,arg3...) call方法的作用就是 把obj1的方法放到obj2对象上使用 arg1,arg2....是参数,传给mehtod的哟 ...
- Spring.getBean()流程和循环依赖的解决
getBean流程介绍(以单例的Bean流程为准) getBean(beanName) 从BeanFactory中获取Bean的实例对象,真正获取的逻辑由doGetBean实现. doGetBean( ...
- nodejs操作MySQL,mysql连接池及事务的使用
https://blog.csdn.net/jasnet_u/article/details/88605168
- 程序员还在用360,腾讯电脑管家清理注册表,清理垃圾?只能说你太low
首先明明电脑上,就有清理垃圾和无用注册表的功能,只是我么缺少发现美的眼睛. 为什么不用360,腾讯全家桶. 那玩意固然香,而且真香,但是后台占用率太高,作为一个有洁癖的我,实在是不想看到自己右下角多一 ...
- codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质
E. Anniversary time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...
- 使用jQuery完成课工场论坛列表
1.点击我要发帖 2.显示出form表单,然后我们填入标题和选择板块 3.点击发布,隐藏表单,发帖列表中出现随机头像,刚才填入的标题和板块显示在列表中,其中还显示出了发布消息的时间 4.再一次的点击我 ...
- Java方法重写
重写override 为什么要重写方法呢? 1:当父类中的方法无法满足子类需求时候,重写方法 2:当子类需要有特有的功能时候,重写方法. Java方法重载:在同一类中,出现多个方法名相同的方法,但是参 ...