Codeforces Round #146 (Div. 2) A. Boy or Girl

http://codeforces.com/problemset/problem/236/A

题意:
给你一个用户名,按照一个规则来判断是男是女。
如果用户名中不同的字母的个数为奇数,那么一定是男的,立即忽略他。
不然是女的,立即和她聊天。

PS:
代码里的if (res & 1)是用按位与来判断奇偶数。
因为二进制的偶数最低位是0,奇数则为1,这个数与1按位与。
如果是偶数,结果为0,奇数为1。
按位与的规则是都为1,结果才为1,否则为0。
1的高位都为0,所以高位按位与后都为0。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;

char s[100000];
bool vis[111];

int main() {
scanf("%s", s);
int len = strlen(s);
for (int i = 0; i < len; i++) vis[s[i] - 'a']++;
int res = 0;
for (int i = 0; i < 26; i++) if (vis[i]) res++;
if (res & 1) puts("IGNORE HIM!");
else puts("CHAT WITH HER!");
return 0;
};