N回折りたたんだ後の正方形の面積を求めるC++プログラム
正方形の一辺の長さと折りたたむ回数が与えられたとき、n回折りたたんだ後の正方形の面積を求めるのがこの記事のテーマです。
正方形とは、長方形と同じく2次元の図形で、4つの辺がすべて等しく、すべての内角が90度であるという特徴を持ちます。
正方形を折りたたむ際は、以下の手順に従います。
1回目:正方形の左上から右下に向かって折り、三角形を作ります。
2回目:上から下へ折りたたみます。
3回目:再び左から右へ折りたたみます。
4回目以降も、同じ手順を繰り返します。
入出力例
入力:side = 23, fold = 4 出力:n回折りたたんだ後の正方形の面積:6.53086
解き方のアプローチ
- まず、折りたたむ前の正方形の面積を求めます(面積 = 一辺 × 一辺)。
- このプログラムでは、折りたたむたびに面積が1/3になると仮定し、各段階で面積を更新していきます。
- 最終的な面積は「元の面積 ÷ 3のfold乗」で求められます。
アルゴリズム
START
関数 double area_nfold(double side, double fold)
ステップ1 → 変数areaを宣言し、side * side で初期化する
ステップ2 → (area * 1.0 / pow(3, fold)) を返す
関数 int main()
ステップ1 → double型の side = 23、fold = 4 を宣言・初期化する
ステップ2 → 関数 area_nfold(side, fold) を呼び出し、結果を表示する
STOP
C++サンプルコード
#include <bits/stdc++.h>
using namespace std;
// n回折りたたんだ後の正方形の面積を計算する関数
double area_nfold(double side, double fold){
double area = side * side;
return area * 1.0 / pow(3, fold);
}
int main(){
double side = 23, fold = 4;
cout << "n回折りたたんだ後の正方形の面積:" << area_nfold(side, fold);
return 0;
}
実行結果
n回折りたたんだ後の正方形の面積:6.53086
コードの解説
関数 area_nfold は、引数として受け取った一辺の長さから面積(side × side)を計算し、それを pow(3, fold)、つまり3のfold乗で割った値を返します。main 関数では side = 23、fold = 4 を渡して結果を出力しています。
計算の流れ
この例では、一辺23の正方形の元の面積は 23 × 23 = 529 です。4回折りたたむため、529 ÷ 3⁴ = 529 ÷ 81 ≈ 6.53086 となり、実行結果と一致します。
-
C++で十二面体の表面積を計算するプログラム
十二面体とは? 「十二面体(dodecahedron)」という言葉は、ギリシャ語に由来しています。「dodeca」は「12」、「hedron」は「面」を意味します。幾何学における十二面体とは、12枚の平面から構成される3次元の正多面体(プラトンの立体)のことです。 他の立体図形と同様に、十二面体にも以下のような特徴的な性質があります。 20個の頂点 30本の辺 12枚の正五角形の面(五角形は5つの辺を持つ多角形) 以下は十二面体の図です。 問題 一辺の長さが与えられたとき、その十二面体の表面積を求めるプログラムを作成します。ここでいう表面積とは、図形のすべての面が占める空間の総面積のこ
-
C++で学ぶクイックソート(QuickSort)の仕組みと実装方法
クイックソートとはクイックソート(Quicksort)は、比較に基づいて未ソートのリスト(配列)を並べ替えるソートアルゴリズムの一つです。「パーティション交換ソート(partition exchange sort)」とも呼ばれます。クイックソートは安定ソートではありません。これは、等しい値を持つ要素同士の相対的な順序が保持されないためです。ただし、配列に対してごくわずかな追加メモリだけで動作するため、メモリ効率に優れています。選択ソートと非常に似ていますが、常に最悪のパーティションを選んでしまうわけではない点が異なり、より洗練された形の選択ソートと捉えることもできます。クイックソートは最も効率