競技プログラミングAtCoder  ABCのA問題の難度と感想です。

## 追記
139			簡単 配列のように文字列内の文字を1文字づつチェック
138			簡単 ifを使う。



# ABCのA問題に関して。
完走した感想はどんなに多くてもA問題ならば約20問ぐらい解けば、他のA問題も十分に解ける程度の実力がついているはずです。

競技プログラミングではありますがA問題ぐらいのレベルの問題ならば、毎回初心者でも十分解けるレベルで出題されています。

# 小学生でも参加が可能か？
2020年度からの小学校プログラミング教育の全面実施されるそうです。小学生でも十分解けるレベルの問題なのでどんどん参加して見てはいかがでしょうか？

# リポジトリ＆成果
github
pg/ABC at master · masakinihirota/pg
https://github.com/masakinihirota/pg/tree/master/ABC

# 続き
競技プログラミング ABCのB問題の過去問を完走したので、難度と感想＆ヒントを書きました。 - Qiita
https://qiita.com/masakinihirota/items/1234258b32cf47c4a03b

成果
AtCoder Problems
https://kenkoooo.com/atcoder/#/table/masakinihirota

AtCoder Problems
https://kenkoooo.com/atcoder/#/user/masakinihirota

![ABC131問完走.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44761/8978d42a-0ec3-b701-f44c-7746eebb0cdc.png)

A問題を100%に埋めたのは気持ちよかったですね。

# 表の見方
プログラム言語の入門書が終わっているレベルの前提で
優しい問題は文頭に

|難度|おすすめ度|
|---|---|
|今まででいちばんやさしい|小学生3,4年程度の算数の知識|
|簡単|小学生5,6年程度の算数の知識|
|無し|中学生程度の算数の知識|

の3段階に分けています。
初心者はまずは2完（A問題、B問題の2題を完全回答）を目指しましょう。

A問題は小学生3,4年生程度の算数の知識で解けます、逆に、難しいのは命令文の英単語ではないでしょうか？

# コンテスト開催予定
AtCoder：競技プログラミングコンテストを開催する国内最大のサイト
https://atcoder.jp/

# A問題リスト

|ABCの番号  |Aの感想orヒント|
|---|---|
| 132     | 文字列のsortを使う                                                                                                                                                                                                                                            |
| 131     | 隣同士の比較                                                                                                                                                                                                                                                  |
| 130     | 簡単                                                                                                                                                                                                                                                          |
| 129     | 整数の配列のsort                                                                                                                                                                                                                                              |
| 128     | 簡単                                                                                                                                                                                                                                                          |
| 127     | 簡単                                                                                                                                                                                                                                                          |
| 126     | 簡単                                                                                                                                                                                                                                                          |
| 125     | 簡単                                                                                                                                                                                                                                                          |
| 124     | 簡単                                                                                                                                                                                                                                                          |
| 123     | 三項演算子                                                                                                                                                                                                                                                    |
| 122     | 簡単                                                                                                                                                                                                                                                          |
| 121     | 素直に解く、全体から黒部分を除いた長さが白                                                                                                                                                                                                                    |
| 120     | ifかminのどちらかをつかう                                                                                                                                                                                                                                     |
| 119     | フォーマットが決まっているので文字列比較ができる                                                                                                                                                                                                              |
| 118     | 約数 余りが0かそれ以外 三項演算子はカッコで囲む                                                                                                                                                                                                               |
| 117     | 簡単                                                                                                                                                                                                                                                          |
| 116     | 角ABCが90度なのでabとbcで面積が出る                                                                                                                                                                                                                           |
| 115     | 簡単 力技で解決                                                                                                                                                                                                                                               |
| 114     | 簡単                                                                                                                                                                                                                                                          |
| 113     | 簡単                                                                                                                                                                                                                                                          |
| 112     | 簡単                                                                                                                                                                                                                                                          |
| 111     | 整数で出力と指定されても、文字列の出力で通った。 charの利用で簡単に                                                                                                                                                                                           |
| 110     | sort 降順でも 後ろから計算でも                                                                                                                                                                                                                                |
| 109     | 2が存在した場合のみNo 偶数になるのは2を掛けたときだけ                                                                                                                                                                                                         |
| 108     | 偶数ならちょうど半分 なので同じ数を掛ける、奇数なら片方を+1して掛ける （数I・Aの場合の数）                                                                                                                                                                    |
| 107     | 簡単                                                                                                                                                                                                                                                          |
| 106     | 簡単                                                                                                                                                                                                                                                          |
| 105     | 簡単                                                                                                                                                                                                                                                          |
| 104     | 簡単                                                                                                                                                                                                                                                          |
| 103     | 難しい 解説PDFは結論のみ。どれを選ぶか不明なので総当たりするか、PDFの式を使う A-b b-c c-aのそれぞれの絶対値を計算して、その中で小さい方から２個の数を足す、ソートして0番目と1番目を足す                                                                       |
| 102     | Nで割り切れるので答えはNの倍数、Nが偶数なら2で割り切れるのでN、Nが奇数なら2倍すれば2でも割り切れるので答えとなる。 最小公倍数というよりも、数学の基礎的な考え方を問う問題。 Lcm関数gcm関数はC++17 から導入                                                    |
| 101     | 簡単                                                                                                                                                                                                                                                          |
| 100     | 3つ同時に取ることは出来ない、最大2つを交互に取るのでどちらかが8個を超えることは出来ない 一瞬場合分けと戸惑ったが、問題を丁寧に読めばすぐ解ける問題。                                                                                                          |
| 99      | 簡単                                                                                                                                                                                                                                                          |
| 98      | max({a,b,c})を使う 3つから探せる（複数可） max(a,b)だと2つを比較                                                                                                                                                                                              |
| 97      | 簡単 abs()                                                                                                                                                                                                                                                    |
| 96      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 95      | 簡単 文字列は配列と考えてループさせる                                                                                                                                                                                                                         |
| 94      | 簡単 条件はじっくり考える                                                                                                                                                                                                                                     |
| 93      | 簡単 文字列のsortを使う                                                                                                                                                                                                                                       |
| 92      | 簡単                                                                                                                                                                                                                                                          |
| 91      | 簡単                                                                                                                                                                                                                                                          |
| 90      | 文字列そのものを1次元配列と考え、文字列の位置を2次元配列と考えて、指定の場所を取り出す。                                                                                                                                                                      |
| 89      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 88      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 87      | 簡単                                                                                                                                                                                                                                                          |
| 86      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 85      | 簡単                                                                                                                                                                                                                                                          |
| 84      | 簡単                                                                                                                                                                                                                                                          |
| 83      | 簡単                                                                                                                                                                                                                                                          |
| 82      | 簡単 入力を実数として扱い、ceil()を使う。                                                                                                                                                                                                                     |
| 81      | チェック 文字列をループしてifで探す。                                                                                                                                                                                                                         |
| 80      | 簡単 min関数を使う。                                                                                                                                                                                                                                          |
| 79      | 文字列を配列と考え、 各文字を比較する。3つ揃えばYes                                                                                                                                                                                                           |
| 78      | 簡単 3つの比較                                                                                                                                                                                                                                                |
| 77      | reverse_copyを使って逆順にした文字列をコピーして比較。 もしくは3文字だと中央が動かないので、中央を比較、そのあとで前と後ろがひっくり返っているかを比較                                                                                                        |
| 76      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 75      | 簡単                                                                                                                                                                                                                                                          |
| 74      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 73      | 数字を文字列として捉え、配列のようにアクセスして調べる。 三項演算子                                                                                                                                                                                           |
| 72      | 簡単 三項演算子 で0未満になったかどうかを判定。 もしくはmax関数を使う                                                                                                                                                                                         |
| 71      | abs関数を使って三項演算子                                                                                                                                                                                                                                     |
| 70      | 3文字なので文字列として捉え先頭と末尾を比較する。 もしくはreverse_copy関数を使用する。                                                                                                                                                                        |
| 69      | 簡単                                                                                                                                                                                                                                                          |
| 68      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 67      | 剰余演算子 三項演算子 3の倍数は3で割り切れる                                                                                                                                                                                                                  |
| 66      | 配列のsort関数 昇順なので先頭から足す もしくはmin関数を使用する。                                                                                                                                                                                             |
| 65      | 限界境界を見極める良問                                                                                                                                                                                                                                        |
| 64      | 実は3の桁数は100でも200以降でも4の倍数なので下二桁だけを見れば判定できる。                                                                                                                                                                                    |
| 63      | 三項演算子は結果の方が同じでなければならない。 stringとintでは使用できない                                                                                                                                                                                    |
| 62      | 愚直だと長くなる、発想の転換をしてグループにはかぶりがない連続の数字なので図の数字を配列の添字ととらえ、 配列の中身をグループ番号として見る。                                                                                                                 |
| 61      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 60      | 簡単 三項演算子 back() front()                                                                                                                                                                                                                                |
| 59      | 簡単 toupper関数を使う                                                                                                                                                                                                                                        |
| 58      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 57      | 簡単                                                                                                                                                                                                                                                          |
| 56      | 二人が同じことを言っていれば正直であり、どちらか片方が違うことを言っていると嘘つきです。                                                                                                                                                                    |
| 55      | 簡単                                                                                                                                                                                                                                                          |
| 54      | 簡単 1を最大値に変換する。                                                                                                                                                                                                                                    |
| 53      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 52      | 簡単 三項演算子 もしくはmax（）                                                                                                                                                                                                                               |
| 51      | 簡単 場所は固定なのでピンポイントで書き換える。                                                                                                                                                                                                               |
| 50      | 簡単 三項演算子 型が違っていてもcinは1行で書ける。                                                                                                                                                                                                            |
| 49      | 簡単                                                                                                                                                                                                                                                          |
| 48      | 簡単                                                                                                                                                                                                                                                          |
| 47      | 簡単 全パターンを調査、もしくはすべての合計がMAX()の2倍の時、 もしくはすべての合計からMAX（）を引いてMAX（）と等しい場合。                                                                                                                                    |
| 46      | 簡単                                                                                                                                                                                                                                                          |
| 45      | 簡単                                                                                                                                                                                                                                                          |
| 44      | 色々                                                                                                                                                                                                                                                          |
| 43      | 簡単                                                                                                                                                                                                                                                          |
| 42      | 配列に入れて、 sort後に比較するか、count()を使う。                                                                                                                                                                                                            |
| 41      | 簡単                                                                                                                                                                                                                                                          |
| 40      | 簡単                                                                                                                                                                                                                                                          |
| 39      | 簡単                                                                                                                                                                                                                                                          |
| 38      | 簡単 back()                                                                                                                                                                                                                                                   |
| 37      | 簡単 min()                                                                                                                                                                                                                                                    |
| 36      | 簡単 切り上げ                                                                                                                                                                                                                                                 |
| 35      | 簡単 比                                                                                                                                                                                                                                                       |
| 34      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 33      | 4桁とも同じ数字なので1111で割り切れると求めることができる もしくは、文字列と受け取り各桁の比較を行う。                                                                                                                                                        |
| 32      | 最大公約数、最小公倍数の問題かと身構えたが、nから始めるループでaとbの両方共余りが０を見つければいい。 難しく考えれば考えるほどドツボにはまる問題。gcd、lcmをしらなくても解ける                                                                                |
| 31      | 簡単 三項演算子やmax()をつかう。max()を使えば一番シンプルに書ける                                                                                                                                                                                             |
| 30      | 簡単 3つの比較                                                                                                                                                                                                                                                |
| 29      | 簡単 文字列の超基礎問題                                                                                                                                                                                                                                       |
| 28      | 簡単                                                                                                                                                                                                                                                          |
| 27      | 簡単 長方形は2つの同じ辺があるので、 同じ数字の辺以外の辺が答え。                                                                                                                                                                                             |
| 26      | 条件をよく読むと偶数のみ与えられるので奇数はない、なので半分をかけ合わせたものが答えとなる 10の場合 1＊9＝9、 5＊5＝25 と半分にした時が答えだと直感でわかる。                                                                                                 |
| 25      | ちょい難しい 文字列の添字のスタートは0から、単純に割り算と剰余で2次元配列の位置を取り出そうとすると一つずれる。 なので、nを-1して位置を調整するとシンプルに書ける。 これは2次元配列として見ると楽。  わからなければデータセットを用意する。 2重ループは・・・ |
| 24      | 紙に書いて条件を整理してからプログラムを書く。                                                                                                                                                                                                                |
| 23      | 10で割れば10の桁が、10の剰余を求めれば1の桁が得られる。  もしくは、文字列として受け取り、char s[0]-'0’で引くと数字が得られる。                                                                                                                                |
| 22      | 200点問題ぐらいの手応え。 初日をカウントするのを忘れてWA                                                                                                                                                                                                      |
| 21      | 1しか考えず、nを表示、1をn回ループで表示すればok                                                                                                                                                                                                              |
| 20      | 簡単 三項演算子                                                                                                                                                                                                                                               |
| 19      | 簡単 3つの合計から最大値と最小値を引く max()とmin()                                                                                                                                                                                                           |
| 18      | めんどう 入力した数字と ソートした数字を比較して順位をつける。 他には18A-2、配列として数字を受け取り、それを別の場所にソートをして、差を比較し順位の番号が来た時に表示する。                                                                                  |
| 17      | ループ入力にして、その時と同時に合計してしまうと楽。                                                                                                                                                                                                          |
| 16      | 今まででいちばんやさしい 三項演算子                                                                                                                                                                                                                           |
| 15      | 簡単 三項演算子 size()を使う。                                                                                                                                                                                                                                |
| 14      | 三項演算子 剰余の剰余は0                                                                                                                                                                                                                                      |
| 13      | 簡単 大文字の’A”を引けば数字が出てくる。0からなので+1しておく。                                                                                                                                                                                               |
| 12      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 11      | 今まででいちばんやさしい 三項演算子                                                                                                                                                                                                                           |
| 10      | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 9       | 今まででいちばんやさしい 切り上げをどう扱うか？ 三項演算子 +1 %                                                                                                                                                                                               |
| 8       | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 7       | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 6       | 今まででいちばんやさしい 三項演算子                                                                                                                                                                                                                           |
| 5       | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 4       | 今まででいちばんやさしい                                                                                                                                                                                                                                      |
| 3       | 実数で扱う 整数のみでも可能                                                                                                                                                                                                                                   |
| 2       | 簡単 max()を使う                                                                                                                                                                                                                                              |
| 1       | 今まででいちばんやさしい                                                                                                                                                                                                                                      |