题目

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;
}