【C++】指定された周囲長から作れる長方形の最大面積を求める方法
はじめに
長方形の周囲長が与えられたとき、その周囲長を持つ長方形として考えられる最大の面積を求めるのが本記事のテーマです。
長方形の周囲長と面積の基礎知識
長方形とは、向かい合う2組の辺がそれぞれ等しく平行な平行四辺形の一種です。

周囲長(外周)とは
長方形の周囲長とは、4つの辺の長さをすべて足し合わせたものであり、長方形の外側を一周したときの総距離とも言えます。
周囲長を求める公式:
周囲長 = 縦 + 横 + 縦 + 横 = 2 ×(縦 + 横)
面積とは
一方、面積は長方形という図形の大きさ(広さ)を表します。
面積を求める公式:
面積 = 縦 × 横
最大面積を求める考え方
与えられた周囲長から最大の面積を得るには、周囲長から適切な縦と横の長さを導き出す必要があります。ポイントは以下の通りです。
- 周囲長を4で割った値に対し、切り上げ(ceil)た値を縦(Length)とする
- 同じく切り捨て(floor)した値を横(Breadth)とする
- この組み合わせが、その周囲長で実現できる縦・横の最も大きな値になります
したがって、求める最大面積は次の式で表されます。
最大面積 = ceil(周囲長 ÷ 4) × floor(周囲長 ÷ 4)
なお、周囲長が一定の長方形の中では、縦=横=周囲長÷4となる正方形のときに面積が最大化されることが数学的に知られています。周囲長が4で割り切れない場合には、切り上げと切り捨ての組み合わせが最良の解となります。
入出力例
- 入力:perimeter = 95
出力:周囲長 95 の長方形として可能な最大面積は 552 - 入力:perimeter = 2.78
出力:周囲長 2.78 の長方形として可能な最大面積は 0
プログラムのアプローチ
- 長方形の周囲長を入力として受け取ります。
- result = ceil(perimeter / 4) × floor(perimeter / 4) を計算します。
- 結果を返し、画面に出力します。
このアルゴリズムは単純な算術演算のみで構成されているため、時間計算量・空間計算量ともに O(1) と非常に効率的です。
サンプルコード
#include <bits/stdc++.h>
using namespace std;
// 与えられた周囲長で作れる長方形の最大面積を計算する
int Maximum(float perimeter){
int len = (int)ceil(perimeter / 4);
int bre = (int)floor(perimeter / 4);
// 面積を返す
return len * bre;
}
int main(){
float perimeter = 27;
cout<<"maximum area of rectangle possible with given perimeter "<<perimeter<<" is: "<<Maximum(perimeter);
return 0;
}
実行結果
上記のコードを実行すると、以下の出力が得られます。
maximum area of rectangle possible with given perimeter 27 is: 42
周囲長27の場合、27÷4=6.75 となり、切り上げの7を縦、切り捨ての6を横とすることで、最大面積 7 × 6 = 42 が得られます。
-
C++で2つの長方形が覆う合計面積を求めるアルゴリズム
2次元平面上に置かれた2つの軸に平行な長方形について、それらが覆う領域の合計面積を求める問題を考えます。各長方形は、左下の頂点と右上の頂点の座標によって定義されます。下図のように、第1の長方形は左下 (A, B)・右上 (C, D)、第2の長方形は左下 (E, F)・右上 (G, H) として表されます。解き方のアプローチこの問題を解くための手順は以下の通りです。まず、2つの長方形が重なっているかどうかを判定します。C ≤ E、A ≥ G、B ≥ H、D ≤ F のいずれかが成り立つ場合、2つの長方形は重ならないため、それぞれの面積の和 (C − A) × (D − B) + (G − E)
-
C++で指定された辺の長さを持つn辺の正多角形の面積を求める方法
この記事では、指定された辺の長さを持つn辺の正多角形の面積を求める問題を取り上げ、図形の面積を計算する公式を導出し、それに基づいたプログラムを作成します。まず、内容を理解しやすくするために、基本事項をおさらいしましょう。基本事項のおさらいn辺の正多角形とは、すべての辺の長さが等しいn個の辺を持つ多角形のことです。例えば、正五角形や正六角形などが挙げられます。面積とは、二次元の図形が占める広がりの大きさを数量的に表したものです。面積公式の導出正多角形の面積を求めるには、図形を構成する個々の三角形の面積を求め、それに辺の数nを掛けます。正多角形は、中心を共有する頂点としてn個の二等辺三角形に分割で