【不明出处】 棋盘问题
来源:互联网 发布:算法统宗 以碗知僧 编辑:程序博客网 时间:2024/04/28 14:23
一道特别简单却错了的题。
棋盘问题
(a.cpp/c/pas)
【问题描述】mxjoe 学长有一个 n*m 的棋盘,每个格子只有可能是黑色或白色。
Oxer 和 mxjoe 在玩一个游戏,每次寻找一个边长为 x 的正方形,其中每个格
子必须为黑色,然后将这些格子染白。
如果谁不能操作了,那么那个人就输了。
Oxer 喜欢质数。
mxjoe 喜欢 1,但讨厌 2。
因此他们规定, x 只可能是非 2 质数或者是 1。
现在他们想知道,如果他们都用最优策略进行游戏,谁会赢?
上帝规定 Oxer 先手。
【输入格式】
第一行输入一个正整数 T,表示测试组数
对于每一个数据,
第一行包括两个正整数 n, m
接下来的 n 行,每行包括 m 个数字 0 或 1,若这个数为 1,则表示该位置为黑色,
否则为白色。
【输出格式】
共 n 行。
对于每一组数据,
输出“ Oxer”或者“ mxjoe”(不包含引号)。
【输入样例】
1
2 3
1 1 0
0 0 1
【输出样例】
Oxer
【数据范围及约定】
对于 30%的数据, 1<=n,m<=3,
对于另外 20%的数据, T=1,
对于 100%的数据, 1<=n,m<=100,1<=T<=10。
一眼看上去,感觉一个限制条件很奇怪:x 只可能是非 2 质数或者是 1。进行了一个大胆的猜想:拿一个和拿一个正方形没有区别。进行几次验算,发现确实如此,事后补上证明:因为非2质数和1都是奇数,拿走奇数个之后一定轮到对方拿,所以没有区别。
#include<bits/stdc++.h>using namespace std;int a[110][110];int main(){freopen("a.in","r",stdin);freopen("a.out","w",stdout);int t;scanf("%d",&t);while (t){t--;memset(a,0,sizeof(a));int m,n,tot=0;tot=0;tot=0;tot=0;scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){scanf("%d",&a[i][j]);if (a[i][j]==1){tot++;}}}if (tot%2==0){printf("mxjoe\n");}else{printf("Oxer\n");}}fclose(stdin);fclose(stdout);return 0;}
重要的事情说三遍(代码已经说了),计数器一定要清零!!!
阅读全文
0 0
- 【不明出处】 棋盘问题
- point (出处不明)
- 三十四个超级经典小故事(摘录,出处不明)
- 磁盘的绝对读写(转贴出处不明)
- 接收不明长度字符串问题
- 接收不明长度字符串问题
- 接收不明长度字符串问题
- 接收不明长度字符串问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- 棋盘问题
- ButterKnife的base类抽取
- 多线程等待(超时)/通知的应用场景-数据库连接池
- 修改项目的访问名称
- 【算法】程序猿不写代码是不对的61
- 23种设计模式之责任链模式
- 【不明出处】 棋盘问题
- JavaScript 获取键盘事件(键盘某个按键被按下)
- Docker安装和启动
- 关闭防火墙
- 两个div出现间隙
- vc 解除文件占用
- TIME_WAIT状态原理(很清楚)
- 使用js动态添加点击事件时,click与onclick的区别
- 了解GPU加速计算