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, ...
随机推荐
- Ubuntu 之 win10更新ubuntu启动项消失
问题描述: 昨晚windows更新,今天启动的时候发现启动项没有了,直接进入windows. 解决方案一: 首先进入BIOS看一看是否开启启动项选择,然后再把安全模式(secure boot)关闭(重 ...
- Silverlight Tools Beta2更新了中文语言支持
1,似乎是微软偷偷摸摸更新的......刚才无意间发现,已经下载安装并测试,已在中文版的VS2008安装成功.注意下载页面的安装说明: http://www.microsoft.com/downloa ...
- spring-boot下mybatis的配置
问题描述:spring boot项目想添加mybatis的配置,在src/main/resources目录下新建了mybatis-config.xml文件,在application.propertie ...
- element-ui中cascader同时获取label和value值
关于elementUI中cascader选中值后,能获取value或者label,但不能同时获value和label,这一问题,琢磨出了这么个办法.以新增和编辑城市为例,type: 1 编辑,type ...
- 深入实践Spring Boot1.4 运行与发布
1.4 运行与发布 本章实例工程的完整代码可以使用IDEA直接从GitHub的https://github.com/chen-fromsz/spring-boot-hello.git中检出,如图1-1 ...
- 推荐3个Python初学者学习Python案例
回复资料,获取最新的Python的资料.想学习Python可以加微信回复报名. 希望今天的分享3个小案例,对你学习Python有帮助 Python 九九乘法表 以下实例演示了如何实现九九乘法表: 实例 ...
- CSS3轻松实现彩色旋转六面体动画
一.效果预览: 二.基本思路: 1.首先这个一个自动触发的动画,因此应使用animation设计,包括自动组装和组装完成后自动旋转的过程: 2.当鼠标放上去的时候六个面及上面的字体均变色,应在六个面设 ...
- 现代软件工程讲义 如何提出靠谱的项目建议 NABCD
互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代. 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了- 那么 ...
- Ubuntu上安装配置Java环境
参考文献:在Ubuntu 14.04中安装JDK 方法一: @ 安装 1. 添加PPA repository系统 PPA repository介绍 $sudo add-apt-repository p ...
- ACM成长之路(干货) 我爱ACM,与君共勉
前几天在网上看到,转过来时刻督促一下自己. ACM队不是为了一场比赛而存在的,为的是队员的整体提高. 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l ...