競技プログラミング用 知識集積所
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問題練習中の人が、解けなくても仕方がない。