题目
Time Limit:
1000 ms
Case Time Limit:1000 ms
Memory Limit:64 MB
Total Submission:79
Submission Accepted:25
Description
在一个8×8的宫格图中,每个格子要么是白色,要么是黑色,且相邻的两个格子的颜色一定不同;已知左上角(1,1)的格子的颜色为白色。现给出用字符描述的该图G,如果有G(i,j)='F',则说明从上向下数的第i行(从1开始数),从左向右数的第j行(从1开始数)交叉的格子被占领,否则这个格子是空的,未被占领。
求出被占领的白格子数量。Input
单组数据
一个8×8的地图,具体参考输入样例。Output
一个整数:被占领的白格子数量。
Sample Input
........
..F.....
.....F..
.....F..
........
........
.......F
.F......Sample Output
2
题解
若从(0,0)开始,则横坐标和纵坐标对2取余后再取反为真的为白房子。
输入读到'F'时,!((x%2)^(y%2))
判断即可
代码
/* By:OhYee Github:OhYee Email:oyohyee@oyohyee.com */ #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <vector> #include <list> #include <stack> using namespace std; int main() { int cnt = 0; for(int i = 0;i < 8;i++) for(int j = 0;j < 8;j++) { char temp; scanf("\n%c\n",&temp); //printf("i=%d j=%d -> %c\n",i,j,temp); if(temp == 'F') if(!((i % 2) ^ (j % 2)))//奇偶性相同的为白色,对2取模后异或取反 cnt++; } printf("%d\n",cnt); return 0; }