プログラミング初心者がAtCoderで最初に取る組む問題としてAtCoder Beginners Selectionとして11問挙げられています。
これをC++で解いていて、メモとして残します。
ABC081B - Shift onlyは4問目に挙がっています。ここから本格的になっていくようです。そして、これは自力で解けませんでした。
この時点で躓いているのでほんとに向いていないなあと思います。
問題内容はN個の整数を受け取って、それぞれを2で割っていきます。その割った回数を求めるというものです。
例は下記のようにN(個数)と、改行してN個の整数が入力されます。
3
8 12 40
そして入力された整数を2で2回割れるので出力は下記です。12が2回だけ割れます。
2
この問題から配列やループ、条件分岐などを使用します。
検索するといろいろ解法がでてきますが、入門書を読み終わって問題に取り組み始めたばかりの人はこれくらいがいいのではないかと思います。
もっと短く効率のよいコードはあるのでしょうが、まずはなんとか提出するという最低限のラインだと思います。
一番分からないのはvectorだと思います。私が持っている入門書には出てきません。
vectorは可変長の配列です。入門書に載っている通常の配列はint a[5]というようにaという変数名で要素数5の配列は用意します。これは固定長です。しかし、vecterは長さを変えられます。
入門書を読んだくらいでは4問目から太刀打ちできないのは非常に酷だなあと思います。
AtCoderで配列についの説明は以下です。
AtCoderでは最初からvecterの話が出てきます。int a[5]というような表記は下のほうの「細かい話(細かい話なので、飛ばして問題を解いても良いです。)」とそもそも知らなくていいくらいに言っています。これは全然進まないわけですよねえ。