1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AtCoder Beginner Contest 327 振り返り

Posted at

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問題が解説読んでもまだ咀嚼できてないからもっと復習。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?