[Programmers][python] 8. 解答練習(3):プログラマーカーペット


誤りに対する批判、質問、討論を歓迎します.自由にコメントを残しておきましょう!!

プログラマー-カーペット


問題の説明


Leoはカーペットを買いに行きました.格子のカーペットが並んでいて、真ん中に赤を塗っていて、最後の列に茶色を塗っています.下図のように.

Leoは家に帰ってから、さっき見たじゅうたんに赤と茶色で塗った格子の数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数brown,赤色の格子の数redをパラメータとして与えた場合,カーペットの横方向と縦方向の寸法を順番に並べて返す解関数を記述してください.

せいげんじょうけん

  • ブラウンメッシュの数brownは、8または5000より大きい自然数である.
  • 赤色メッシュの赤色は、200000を超える自然数である.
  • カーペットの横方向の長さは、縦方向の長さ以上である.
  • I/O例


    brownredreturn102[4, 3]81[3, 3]2424[8, 6]

    の意見を打診


  • よく考えてみると、最初のルールはbrown + redの値がbrown * redだった.

  • したがって、for重複文の範囲はtotal = brown + redである.totaliによって分解されると、total//iiのペアbrownredの候補に分解される.

  • 以下に、brownの数との比較を示す.
  • 横長X横長X横長Xの値はtotalであり、redの値を減算すると適切なiが得られる.
  • 私は茶色しか数えません.
  • i*2:2行ブラウン
  • `2*(total//i))-42行の茶色の重複を削除する4つ
  • Code (Python)

    def solution(brown, red):
        total = brown + red
        for i in range(1, brown+red+1):
            if total % i == 0:
                if (i*2 + (2*(total//i))-4) == brown:
                    return [(total)//i, i]

    この記事は、プログラマーアカデミー人工知能Defcosコースで学んだ内容をもとにまとめたものです.