[プログラマー]通常の長方形(Python)
質問する
正方形
問題の説明
w,h<=1億であるため,O(wxh)を持つ時間的複雑度はタイムアウトする.初めて思いついたのはw,hの最大公約数を求めてw,hの範囲を縮小して答えを探すことでしたが,2つの数の場合,この方法は通用しないので考えが変わりました.
どう考えても答えがなく、数学の問題だと思って、答えを見つけた.直線カットされた矩形の個数は横(W)+縦(H)−G(最大公約数)である.実際,最大公約数が2より大きい矩形と相互間の矩形,正方形などを描いて実験を行ったが,カットされた矩形の個数はすべて上記式と同じであった.最後は暗記するしかない.
ソースコード
def GCD(a, b):
gcd = 1
small = a if a < b else b
for i in range(2, small + 1):
if a % i == 0 and b % i == 0:
gcd = i
return gcd
def solution(w,h):
answer = w * h - (w + h - GCD(w, h))
return answer
Reference
この問題について([プログラマー]通常の長方形(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@qweadzs/프로그래머스-멀쩡한-사각형Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol