競技プログラミング用 知識集積所
ABC404A - Not Found
最終更新:
sport_programming
-
view
問題
A問題としては超難問。注意。
必要知識
考え方
まずは入力内容を確認。
入力内容は文字列なので、string型変数を用意してcinで受け取る。
入力内容は文字列なので、string型変数を用意してcinで受け取る。
解き方はいくつかあるが、A問題なので愚直にやろうとすると、
- aがないならaと答える
- そうでない場合で、bがないならbと答える
- そうでない場合で、cがないならcと答える
- 以下略
としたいところ。
ということで、まず
for (char c='a'; c<='z'; c++) { // ここに書き足す }
というchar型ループの枠を作る。
次に中に「条件を満たすならcを出力してループ終了」を作る。
次に中に「条件を満たすならcを出力してループ終了」を作る。
for (char c='a'; c<='z'; c++) { bool flag; // ここに書き足す if (flag) { [[cout]] << c << endl; break; } }
最後に、cが文字列の中にあるかを判定。
大量の判定のうち1つでも成り立てばダメ、という形なので、複雑な判定条件のコツ(未作成)を参考に、trueで初期化して判定に引っかかったらfalse化する処理をforループで回す。
大量の判定のうち1つでも成り立てばダメ、という形なので、複雑な判定条件のコツ(未作成)を参考に、trueで初期化して判定に引っかかったらfalse化する処理をforループで回す。
for (char c='a'; c<='z'; c++) { bool flag = true; for (int i=0; i<n; i++) { if (s.at(i)==c) flag = false; } if (flag) { cout << c << endl; break; } }
解答例
注意点
解けなくても泣かない。
A問題で出ていい難易度の問題ではない。
ここ4回の正答率(1回でも提出した人のうち、最終的にACできた割合)とペナルティ率(1回でもペナルティをもらった人の割合)は、以下。
ここ4回の正答率(1回でも提出した人のうち、最終的にACできた割合)とペナルティ率(1回でもペナルティをもらった人の割合)は、以下。
正答率 | ペナ率 | |
---|---|---|
401A | 99.39% | 10.24% |
402A | 99.33% | 4.72% |
403A | 99.27% | 6.54% |
404A | 97.65% | 14.09% |
ベテランまで含めても、7人に1人がペナルティをもらい、40人に1人くらいは最後まで解けていない(一度も提出できなかった人を含めれば、解けていない人はおそらくもっと多い)。
競プロ始めたてでA問題練習中の人が、解けなくても仕方がない。
競プロ始めたてでA問題練習中の人が、解けなくても仕方がない。