题意略。
2146
#include <stdio.h>
#include <string.h>
const int N = 10100;
const char sign[2][N] = {"Even", "Odd"};
int main () {
char str[N];
int cas;
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
scanf("%s", str);
int len = strlen(str);
printf("Case %d: %s\n", i, sign[len % 2]);
}
return 0;
}
解题思路:每次最多减(A - 1)/2.
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
typedef long long ll;
ll A, B;
int solve() {
int ans = 0;
while (A > B) {
A = A - (A - 1) / 2;
ans++;
}
return ans;
}
int main() {
int cas;
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
cin >> A >> B;
printf("Case %d: %d\n", i, solve());
}
return 0;
}
2151
#include <stdio.h>
#include <string.h>
const int N = 105;
const char sign[2][N] = {"Fat brother", "Maze"};
int main () {
int cas, l, r;
char str[N];
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
int ans = 0;
scanf("%d%d", &r, &l);
for (int j = 0; j < r; j++) {
scanf("%s", str);
for (int k = 0; k < l; k++) if (str[k] == 'O') ans++;
}
printf("Case %d: %s\n", i, sign[ans % 2]);
}
return 0;
}