A. AtCoder Quiz 3
题意:给定一个正整数 N N N,输出第 N N N 次比赛的名称,因为 A G C 42 AGC42 AGC42 被取消了,所以 42 42 42 场及以后的场次的序号为场次 + 1 +1 +1
判断 N N N 和 42 42 42 的大小即可,具体判断见代码
#include<bits/stdc++.h>
using namespace std;
int main(void) {
int x;
scanf("%d", &x);
if (x >= 42) x++;
printf("AGC%03d\n", x);
return 0;
}
B. Triple Metre
题意:给定一个字符串 S S S,判断其是否是 o x x o x x o x x … oxxoxxoxx\ldots oxxoxxoxx… 的一个子串
首先 S S S 要以 3 3 3 为循环节
如果 ∣ S ∣ ≤ 2 |S|\leq 2 ∣S∣≤2 特判
对于 ∣ S ∣ ≥ 3 |S|\geq 3 ∣S∣≥3,需要满足前三个字符有 2 2 2 个 x x x 和 1 1 1 个 o o o
否则不成立
#include<bits/stdc++.h>
using namespace std;
string s;
bool check(void) {
int n = s.size();
for (int i = 0; i < n; i++) {
if (s[i] != s[i % 3]) return false;
}
if (n == 1) return true;
if (n == 2) {
if (s == "oo") return false;
else return true;
}
int cnto = 0, cntx = 0;
for (int i = 0; i < 3; i++) {
cnto += s[i] == 'o';
cntx += s[i] == 'x';
}
return cnto == 1 && cntx == 2;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> s;
if (check()) cout << "Yes\n";
else cout << "No\n";
return 0;
}
C. X drawing
题意:给定一个 N × N N\times N N×N 的格点,给定两个整数 A , B A, B A,B,做以下两个操作
- 对每个整数 k k k 满足 max ( 1 − A , 1 − B ) ≤ k ≤ min ( N − A , N − B ) \max(1 - A, 1 - B)\leq k\leq \min(N - A, N - B) max(1−A,1−B)≤k≤min(N−A,N−B),将 ( A + k , B + k ) (A + k, B + k) (A+k,B+k) 涂成黑色
- 对每个整数 k k k 满足 max ( 1 − A , B