ABC327
概要
A - ab
考えてたこと
あまりどうやって実装すれば良いか分からなかった問題。素直に実装。
提出したもの
a.cpp
int main() {
int n;
cin >> n;
string s;
cin >> s;
bool judge = false;
for (int i = 0; i < n - 1; i++) {
if (s[i] == 'a' && s[i + 1] == 'b') {
judge = true;
}
if (s[i] == 'b' && s[i + 1] == 'a') {
judge = true;
}
}
if (judge) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
振り返り
解答も素直に実装してたからこの感じで良さそう。
B - A^A
考えてたこと
最初A^2かと思ってsqrt使ってたらテスト転けて問題が全然違っていてびっくりしました。
Aのパターンが適当に考えても18までしかないから、先に計算しておいてvectorに保存、全探索で十分足りるかなぁと考えて解きました。仮にオーバーフローしても問題なさそうなコードになったと思います。
提出したもの
b.cpp
ll calculate(ll a) {
ll result = 1;
for (int i = 0; i < a; i++) {
result *= a;
}
return result;
}
int main() {
ll b;
cin >> b;
vector<ll> vec(20);
for (ll i = 0; i < 18; i++) {
vec[i] = calculate(i);
}
int ans = -1;
for (int i = 0; i < 18; i++) {
if (vec[i] == b) {
ans = i;
}
}
cout << ans << endl;
return 0;
}
振り返り
問題はちゃんと読みましょう。ただリカバリー早くて偉かった。
C - Number Place
考えてたこと
単純な実装力を求められているのかなぁ...と考えて素直に実装。
提出したもの
c.cpp
int main() {
int glid[9][9];
rep(i, 0, 9) {
rep(j, 0, 9) {
cin >> glid[i][j];
}
}
bool judge = true;
rep(i, 0, 9) {
set<int> set;
rep(j, 0, 9) {
set.insert(glid[i][j]);
}
if (set.size() != 9) {
judge = false;
}
}
rep(i, 0, 9) {
set<int> set;
rep(j, 0, 9) {
set.insert(glid[j][i]);
}
if (set.size() != 9) {
judge = false;
}
}
for (int i = 0; i < 3; i++) {
set<int> set;
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
set.insert(glid[j + 3 * i][k + 3 * i]);
}
}
if (set.size() != 9) {
judge = false;
}
}
if (judge) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
振り返り
正方形の部分の確認の実装にちょっと困ったけど、for文3つで良い感じに実装できた。
振り返り
D問題が解説読んでもまだ咀嚼できてないからもっと復習。