Neunomizuの日記

俺だけが俺だけじゃない

「AtCoder Beginner Contest 148」に出た

tags: 競技プログラミング

コンテストへのリンク

https://atcoder.jp/contests/abc148/tasks

感想

  • 早解き回(?)
  • つまんねー

A問題

https://atcoder.jp/contests/abc148/tasks/abc148_a

  • 6-a-bでもおk

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for (ll i = 0; i < (ll)n; ++i)
static const int dx[4] = { 0, 1, 0, -1 };
static const int dy[4] = { 1, 0, -1, 0 };
static const char dir[4] = { 'u', 'r', 'd', 'l' };
static const ll INF = 1 << 21;
static const ll MOD = 1e9 + 7;

signed main()
{
    int a, b;
    cin >> a >> b;
    rep(i, 3)
    {
        if (i + 1 != a && i + 1 != b) {
            cout << i + 1 << endl;
            return 0;
        }
    }
    return 0;
}

B問題

https://atcoder.jp/contests/abc148/tasks/abc148_b

  • STを交互に出力する

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for (ll i = 0; i < (ll)n; ++i)
static const int dx[4] = { 0, 1, 0, -1 };
static const int dy[4] = { 1, 0, -1, 0 };
static const char dir[4] = { 'u', 'r', 'd', 'l' };
static const ll INF = 1 << 21;
static const ll MOD = 1e9 + 7;

signed main()
{
    int N;
    string S, T;
    cin >> N;
    cin >> S >> T;
    rep(i, N)
    {
        cout << S[i] << T[i];
    }
    cout << endl;
    return 0;
}

C問題

https://atcoder.jp/contests/abc148/tasks/abc148_c

  • 最小公倍数を求める
  • まずはABの最大公約数を求めて,ABの積から割る

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for (ll i = 0; i < (ll)n; ++i)
static const int dx[4] = { 0, 1, 0, -1 };
static const int dy[4] = { 1, 0, -1, 0 };
static const char dir[4] = { 'u', 'r', 'd', 'l' };
static const ll INF = 1 << 21;
static const ll MOD = 1e9 + 7;

ll A, B;

signed main()
{
    cin >> A >> B;
    cout << A / __gcd(A, B) * B << endl;
    return 0;
}

D問題

https://atcoder.jp/contests/abc148/tasks/abc148_d

  • これは左から見て1, 2, ...3となっている部分を探せばよいです

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for (ll i = 0; i < (ll)n; ++i)
static const int dx[4] = { 0, 1, 0, -1 };
static const int dy[4] = { 1, 0, -1, 0 };
static const char dir[4] = { 'u', 'r', 'd', 'l' };
static const ll INF = 1 << 21;
static const ll MOD = 1e9 + 7;
int N;

signed main()
{
    cin >> N;
    vector<int> a(N);
    rep(i, N) { cin >> a[i]; }
    int cnt = 1;
    rep(i, N)
    {
        if (cnt == a[i]) {
            cnt++;
        }
    }
    if (cnt != 1) {
        cout << N - cnt + 1 << endl;
    } else {
        cout << -1 << endl;
    }

    return 0;
}

E問題

https://atcoder.jp/contests/abc148/tasks/abc148_e

  • 解けなかった(完)

次回への反省

  • 過去問でもっと典型問題に触れるべきだと思った