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

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

Yes/No判定問題

AtCoder ABC 205 B - Permutation Check (7Q, 灰色, 200 点)

いろんな方法が考えられる! 問題へのリンク 問題概要 1 以上 以下の整数からなる数列 が与えられます。 この数列が を並び替えられることで得られるかどうかを判定せよ。 制約 考えたこと 問題文は「 を並び替えることで に一致させられるか」を問いかける…

鉄則本 B06 - Lottery (4Q, ★2)

累積和をやって、その次にやる類題として、そりゃこれを出すよね!! って感じの問題ですね。 問題へのリンク 問題概要 回くじびきを引いた。 回目の結果は であった ( のときアタリ、 のときハズレ)。 次の 回のクエリに答えよ。 【クエリ】 が与えられるの…

JOI 一次予選 2020 (第 1 回) A - 3 つの整数 (8Q, 難易度 1)

記念すべき「JOI 一次予選」が最初に行われた年の問題。この頃はまだ A 問題も結構難しかったのですね。 問題へのリンク editorial 問題概要 3 個の整数 が与えられる。これらの整数は 1 か 2 のいずれかである。 1 と 2 のうち、どちらの方が多くあるかを判…

鉄則本 B03 - Supermarket 1 (6Q, ★2)

「組」を全探索する問題! 問題へのリンク 問題概要 個の整数 から 3 個選んで、その和を 1000 にすることが可能かどうかを判定せよ。 解法 github.com コード #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int> A(N); for (int i = 0; </int></bits/stdc++.h>…

鉄則本 A03 - Two Cards (7Q, ★1)

二重 for 文の練習! 鉄則本の例題なので解法はメモ程度に。 問題へのリンク 問題概要 2 つの数列 と が与えられる。 これらから要素を 1 つずつ選び、和が となるようにすることが可能か判定せよ。 メモ 二重の for 文を使おう! コード #include <bits/stdc++.h> using na</bits/stdc++.h>…

鉄則本 B02 - Divisor Check (7Q, ★1)

整数に対する for 文を用いての全探索です! 問題へのリンク 問題概要 以上 以下の整数のうち、100 の約数であるものは存在するか、判定せよ。 解法 github.com コード #include <bits/stdc++.h> using namespace std; int main() { int A, B; cin >> A >> B; bool res = fa</bits/stdc++.h>…

鉄則本 A02 - Linear Search (8Q, ★1)

線形探索法の基本問題! 鉄則本の問題なので、解法はメモ程度に。 問題へのリンク 問題概要 個の整数 の中に、整数 が含まれるかどうかを判定せよ。 メモ for を使った全探索です! コード #include <bits/stdc++.h> using namespace std; int main() { // 入力 int N, X; c</bits/stdc++.h>…

AtCoder ABC 352 A - AtCoder Line (7Q, 灰色, 100 点)

算数系の問題! 問題へのリンク 問題概要 解法 入力の中に が含まれるが、これは結局使わない。こういう変数に惑わされないようにしよう。次の 2 つの場合に分けて考える。 のとき (上りのとき) のとき (下りのとき) 前者の場合は、"Yes" となる条件は と書…

JOI 一次予選 2024 (第 2 回) B - 火曜日 (8Q, 難易度 1)

慣れていないと少し難しいかもしれない。 問題へのリンク editorial 問題概要 今日は日曜日である。 今日の 日後が火曜日であるならば 1 を、そうでないならば 0 を出力せよ。 解法 日後が火曜日であるための条件を考えましょう。 「0 日後は日曜日」「1 日…

JOI 一次予選 2024 (第 1 回) B - 和の判定 (8Q, 難易度 1)

上手に場合分けしよう! 問題へのリンク editorial 問題概要 3 個の整数 が与えられる。 これらのうちの 1 個が、残りの 2 個の和として表せるときは 1 を出力し、そうでないときは 0 を出力せよ。 解法 「3 個の整数 のうちの 1 個」が残りの 2 個の和とし…

AtCoder ABC 228 A - On and Off (6Q, 灰色, 100 点)

これは結構大変! 問題へのリンク 問題概要 高橋君は、毎日 時 0 分に部屋の電気を点け、 時 0 分に部屋の電気を消す。電気をつけている間に日付が変わることもある。 時 30 分に部屋の電気がついているかどうかを判定せよ。 解法 これは整理するのが大変だ…

AtCoder ABC 350 A - Past ABCs (7Q, 灰色, 100 点)

構文解析の初歩ですね。C++ なら、scanf() 関数を使うと楽ですね。 問題へのリンク 問題概要 "ABC197" のような長さ 6 の文字列 が与えられる。 何回目の ABC であるかを判定し、それが 316 回を除く、1〜349 回のいずれかであるかどうかを判定せよ。 解法 C…

AtCoder ABC 224 A - Tires (8Q, 灰色, 100 点)

文字列を上手に使う練習 問題へのリンク 問題概要 末尾が "er" か "ist" であるような文字列 (2 文字以上) が与えられます。 どちらであるかを判定してください。 解法 末尾が "er" であるかどうかを判定することにしよう。文字列 S の長さを N とするとき、…

AtCoder ABC 223 A - Exact Price (8Q, 灰色, 100 点)

えぐいコーナーケースに注意! でもサンプルにあるね。 問題へのリンク 問題概要 財布に 円玉が 1 枚以上入っています。 財布に入っている合計金額がちょうど 円であるようなことが、あり得るかどうかを判定してください。 制約 考えたこと 基本的には「 が …

AtCoder ABC 218 A - Weather Forecast (灰色, 100 点)

まさに「文字列の index アクセス」を練習できる問題! 問題へのリンク 問題概要 7 文字の文字列 が与えられる。この文字列は 'o' と 'x' のみからなる。 この文字列の 番目の文字が 'o' であるならば "Yes"、そうでなければ "No" と答えよ。 解法 多くのプ…

AtCoder ABC 217 A - Lexicographic Order (灰色, 100 点)

辞書順という言葉は聞きなれないかもしれないが、ここでマスターしよう! 問題へのリンク 問題概要 文字列 が与えられる。 が よりも辞書順で小さいならば "Yes" を出力し、そうでなければ "No" を出力せよ。 解法 辞書順とは、その名の通り「辞書に出てくる…

AtCoder ABC 215 A - Your First Judge (灰色, 100 点)

if 文と、文字列の練習 問題へのリンク 問題概要 文字列 が与えられる。 が文字列 "Hello,World!" と完全に一致するならば "AC" と出力し、そうでなければ "WA" と出力せよ。 解法 文字列 が ""Hello,World!" と完全に一致するかどうかは if (S == "Hello,Wo…

AtCoder ABC 208 A - Rolling Dice (灰色, 100 点)

「この数からこの数の間の数はすべて作れる」という考え方をする問題。この考え方は、より高度な問題では頻出! 問題へのリンク 問題概要 1〜6 の目が出るサイコロを 回振った。 出た目の総和が になることがありうるかどうかを判定せよ。 解法 これは難しい…

AtCoder ABC 199 A - Square Inequality (灰色, 100 点)

不等式を頑張って実装! 問題へのリンク 問題概要 3 個の整数 が与えられる。 であるかどうかを判定せよ。 解法 if (A * A + B * B < C * C) によって判定できる。 #include <bits/stdc++.h> using namespace std; int main() { int A, B, C; cin >> A >> B >> C; if (A * A</bits/stdc++.h>…

AtCoder ABC 195 A - Health M Death (灰色, 100 点)

これは簡単! 剰余演算子「%」を確認しよう! 問題へのリンク 問題概要 2 個の整数 が与えられる。 が の倍数であるかどうかを判定せよ。 解法 が の倍数であるとは、 を で割った余りが 0 であるということです。 を で割った余りは H % M と書けます。 以…

AtCoder ABC 191 A - Vanishing Pitch (灰色, 100 点)

不等式の問題! 問題へのリンク 問題概要 高橋君の投げたボールは、速度 で移動し、 秒後から 秒後の間に消える。 ボールから m の位置にいる青木君にとって、ボールが消えていないかどうかを判定せよ。 解法 消えている条件を不等式で書くと、次のようにな…

AtCoder ABC 189 A - Slot (灰色, 100 点)

文字列問題! 問題へのリンク 問題概要 長さ 3 の文字列が与えられる。これが 1 種類の文字のみから成るかどうかを判定せよ。 解法 文字列 S の 3 文字は S[0], S[1], S[2] と表せる。これらが全て等しいということは S[0] == S[1] S[1] == S[2] がともに満…

AtCoder ABC 188 A - Three-Point Shot (灰色, 100 点)

3-point shot で逆転できるという条件を、上手に数式に落とし込もう! 問題へのリンク 問題概要 バスケの試合で両チームの得点は 点である ( である)。 どちらかのチームに 3 点追加されたときに、逆転が起こるかどうかを判定せよ。 解法 のどちらが大きいか…

AtCoder ABC 181 A - Heavy Rotation (灰色, 100 点)

偶数か奇数かを判定する問題! 問題へのリンク 問題概要 高橋君の今日の状態は "White" である。 毎日 "White" と "Black" が入れ替わる。 日後の状態を答えよ。 解法 が偶数ならば、"White" が奇数ならば、"Black" である。 #include <bits/stdc++.h> using namespace std;</bits/stdc++.h>…

AtCoder ABC 177 A - Don't be late (灰色, 100 点)

double 型を使いたくなる問題。実は使わなくても解ける。 問題へのリンク 問題概要 メートル離れた場所で待ち合わせがある。残り時間は 分である。 分速 メートルで向かうとき、待ち合わせ時間に間に合うか? 解法 分速 メートルで メートル進むのに要する時…

AtCoder ABC 174 A - Air Conditioner (灰色, 100 点)

久しぶりに簡単な問題! 問題へのリンク 問題概要 整数 が与えられる。 が 30 以上ならば "Yes"、そうでなければ "No" を出力せよ。 解法 if 文を使おう。 #include <bits/stdc++.h> using namespace std; int main() { int X; cin >> X; if (X >= 30) cout << "Yes" << end</bits/stdc++.h>…

AtCoder ABC 167 A - Registration (灰色, 100 点)

一見 for 文が必要だが、なしでも解ける 問題へのリンク 問題概要 2 つの文字列 が与えられる。 は より 1 文字多い。 が の末尾に 1 文字追加することで出来上がるものであるかどうかを判定せよ。 解法 の末尾の文字を削除しよう。C++ なら、 T.pop_back();…

AtCoder ABC 165 A - We Love Golf (7Q)

色んな解法がある! この手の数値的なものに対して「全探索」という解法を選択肢に持てるようにしていこう。 問題へのリンク 問題概要 3 個の正の整数 が与えられる。次の条件を満たす整数が存在するかどうかを判定せよ。 の倍数である 以上 以下である 制約…

AtCoder ABC 162 A - Lucky 7 (灰色, 100 点)

これは文字列で入力を受け取って処理した方が楽! 問題へのリンク 問題概要 3 桁の整数 が与えられる。 の桁の値に 7 が含まれるかどうかを判定せよ。 解法 を整数として処理することもできるが、文字列として受け取った方が楽。 文字列ならば、N[0] と N[1]…

AtCoder ABC 160 A - Coffee (灰色, 100 点)

文字列の index アクセスと、論理演算子「&&」の理解を問う問題。 問題へのリンク 問題概要 長さ 6 の文字列が "coffee" 的であるとは、 3 文字目と 4 文字目が等しい 5 文字目と 6 文字目が等しい という条件をともに満たすことを言います。 与えられた長さ…