Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

N번 접은 후 정사각형의 넓이를 구하는 C++ 프로그램


정사각형의 한 변의 길이와 접는 횟수가 주어졌을 때, 그 횟수만큼 접은 뒤 남는 정사각형의 넓이를 구하는 것이 이 문제의 목표입니다.

정사각형은 모든 변의 길이가 같고 네 내각이 모두 90도인 2차원 도형입니다.

정사각형을 접을 때는 다음과 같은 순서로 진행합니다.

  • 왼쪽 위 모서리에서 오른쪽 아래 방향으로 접어 삼각형 형태로 만듭니다.

  • 두 번째 접기는 위에서 아래 방향으로 접습니다.

  • 세 번째 접기는 다시 왼쪽에서 오른쪽으로 접습니다.

이후에는 위의 단계를 같은 방식으로 반복하며 접기를 계속 진행합니다.

예시

입력: side = 23, fold = 4
출력: n번 접은 후 정사각형의 넓이 : 6.53086

이 문제는 다음과 같은 접근 방식으로 해결할 수 있습니다.

  • 먼저 접기 전 정사각형의 넓이를 구합니다. 즉, area = side × side 입니다.
  • 접기를 반복할 때마다 겉으로 드러나는 면적이 줄어들어, 전체 넓이는 접는 횟수에 따라 지수적으로 감소합니다.
  • 최종 넓이는 초기 넓이를 pow(3, fold), 즉 3의 fold 제곱으로 나눈 값입니다.

알고리즘

시작
    함수 double area_nfold(double side, double fold)
    Step 1 → 변수 area를 선언하고 side * side 값으로 초기화
    Step 2 → (area * 1.0 / pow(3, fold)) 값을 반환
    함수 int main()
    Step 1 → 변수 side = 23, fold = 4를 선언하고 초기화
    Step 2 → area_nfold(side, fold) 함수를 호출한 뒤 결과 출력
종료

예제 코드

#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

위 프로그램은 먼저 한 변의 길이를 제곱하여 초기 넓이를 구한 뒤, 접는 횟수만큼 거듭제곱한 값(pow(3, fold))으로 나누어 최종 넓이를 계산합니다. 예를 들어 한 변이 23이고 4번 접는다면, 23 × 23 = 529를 3⁴ = 81로 나눈 약 6.53086이 결과가 됩니다.