けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 134 A - Dodecagon (灰色, 100 点)

これは本当に言われたとおりにやるだけ!

問題概要

整数  r の値が与えられるので、 3r^{2} の値を答えてください。

解法

標準入力を用いて r の値を受け取り、3 * r * r の値を出力すれば OK。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int r;
    cin >> r;
    cout << 3 * r * r << endl;
}

AtCoder ABC 133 A - T or T (灰色, 100 点)

久しぶりの易しい問題!

問題概要

電車を使うと 1 人あたり  A 円かかります。

タクシーを使うと  N 人で  B 円かかります。

 N 人で移動する最小料金はいくらか。

解法

  • A * N
  • B

のうちの小さい方を答えれば OK。関数 min() が使える。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, A, B;
    cin >> N >> A >> B;
    cout << min(A * N, B) << endl;
}

AtCoder ABC 132 A - Fifty-Fifty (灰色, 100 点)

これはだいぶ難しい問題ですね!

問題概要

4 文字の文字列  S が与えられる。

 S がちょうど 2 種類の文字からなり、それらの文字がちょうど 2 個ずつあるかどうかを判定せよ。

解法

色んな解法があると思われる。ここでは、 S をアルファベット順にソートしてしまうことを考えた。

そうすると、たとえば  S = "bebe" のときには、 S = "bbee" というようになる。そうすれば、次の条件をすべて満たすかどうかを判定すればよくなる。

  • S[0] == S[1]
  • S[1] != S[2]
  • S[2] == S[3]

ここで、S[1] != S[2] という条件を忘れてはいけない。これを入れておかないと  S = "ffff" のようなものも "Yes" と誤判定してしまうのだ。

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    sort(S.begin(), S.end());
    
    if (S[0] == S[1] && S[1] != S[2] && S[2] == S[3])
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}

AtCoder ABC 131 A - Security (灰色, 100 点)

隣接要素を見る問題。それは何気に結構難しいことだとも思う。

問題概要

4 文字の文字列が与えられます。

隣り合う文字が等しい箇所が存在するならば "Bad"、そうでなければ "Good" と答えてください。

解法

次のいずれかを満たせば "Bad" と答えれば OK

  • S[0] == S[1]
  • S[1] == S[2]
  • S[2] == S[3]

論理演算子「||」を用いて判定できる ("Good" 側を判定するなら「&&」)

#include <bits/stdc++.h>
using namespace std;

int main() {
    string S;
    cin >> S;
    if (S[0] == S[1] || S[1] == S[2] || S[2] == S[3])
        cout << "Bad" << endl;
    else
        cout << "Good" << endl;
}

AtCoder ABC 130 A - Rounding (灰色, 100 点)

とても易しい if 文の問題

問題概要

整数  X, A が与えられる。

 X A 未満のときは 0、 A 以上のときは 10 を出力せよ。

解法

 X A 未満であることは X < A と表せる。if 文を用いて処理を分岐すれば OK。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int X, A;
    cin >> X >> A;
    if (X < A) cout << 0 << endl;
    else cout << 10 << endl;
}