すべてのチャレンジ
難しい 0件解決済み 正答率0%

長方形を正方形に切り分ける

すべて正方形のみになるように、必要な最小の直線カット数を求めてください。

各手順で、1つの長方形を選び、その一辺に平行な直線で端から端まで切って、2つの正の整数の辺の長さを持つ長方形に分けます。すべてのピースが正方形になるまで続けてください。正方形の大きさは異なっても構いません。ピースの数ではなく、カットした回数を数えてください。

rectangle_cutting(height, width) を実装してください。

入力

height: 最初の長方形の高さ。

width: 最初の長方形の幅。

出力

必要な最小のカット数を返してください。

制約

1 ≤ height, width ≤ 500。回転しても答えは変わりません。

例

例 1
入力:
width = 3
height = 2

期待される出力:
expected = 2
入力:
long long width = 3;
long long height = 2;

期待される出力:
long long expected = 2;
入力:
long width = 3;
long height = 2;

期待される出力:
long expected = 2;

解説

2 × 2 の正方形を切り離すと、2 × 1 の長方形が残ります。残りをもう一度切ると、2つの1 × 1の正方形になります。

例 2
入力:
width = 4
height = 4

期待される出力:
expected = 0
入力:
long long width = 4;
long long height = 4;

期待される出力:
long long expected = 0;
入力:
long width = 4;
long height = 4;

期待される出力:
long expected = 0;

解説

最初から長方形が正方形なので、カットは不要です。

参考資料

この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。