Python3で解く AtCoder Beginner Contest 180 C - Cream puff
問題の意図的に約数を列挙すればいい。
目次
概要
- が与えられる。
- とした時に割り切れる を全て列挙できる?
解くときに考えた内容
- 文意から、約数列挙するだけ。
- 約数列挙は手元に関数があるので、それの復習。
- 検索範囲はから以下
- がで割り切れたら、lowerに加える。
- 割った結果がと異なる場合はupperに加える。
- intでほしいので演算子は//
- 最後にリストを合体させる。(一応順番にするためにupperを逆順にしてる)
- 出力が行だから、アンパックして改行。
コード
def divisors(n): lower, upper = [], [] i = 1 while i*i <= n: if n % i == 0: lower.append(i) if i != n // i: upper.append(n//i) i += 1 return lower + upper[::-1] n = int(input()) ans = divisors(n) print(*ans, end='\n')
参考になる書籍
- 問題解決力を鍛える!アルゴリズムとデータ構造
けんちょんさんこと、大槻さんの書籍である、「問題解決力を鍛える!アルゴリズムとデータ構造」 ご本人の記事の中で難易度は、螺旋本ということで初学者でも非常に結構読みやすい!!!(実際に、けんちょんさんの記事はC++に疎い自分でも、その思考プロセスを学べるくらい丁寧に書かれているし、この書籍も非常に読みやすい)どのようなステータスの人にもおすすめの一冊になっている。
とうとう発売され自分の手元にも来た(2020-10-03)。現在読み中なのである程度読み込んだら感想を書く予定。めっちゃ図が多いし、章末問題もあるしかなりイケてる。答えはC++で書かれているがそのうちPythonでも書かれるとのことなので、自分で前もってやってしまおうと思う(答え合わせできるのはありがたい)。
問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)
- 作者:大槻 兼資
- 発売日: 2020/10/02
- メディア: 単行本(ソフトカバー)
章末問題を解いてる。まだ途中。 blacktanktop.hatenablog.com