(C++) 백준 2052- 지수연산

코딩너구리·2025년 10월 10일

코딩 문제 풀이

목록 보기
25/266

https://www.acmicpc.net/problem/2052

문제

> 양의 정수 N이 주어질 떄 1/2^N을 계산해라.
> 1/2^N의 정확한 값을 소수형태로 출력한다.

접근

pow연산을 이용해 지수계산을 해 결과를 출력한다.

문제해결

> 1/2^N은 1/2의 ^N과 같고 1/2는 0.5이므로 pow(0.5, N)으로 계산한다.
> 소수점 처리를위해 fixed로 고정소수점 형식으로 출력하고 setprecision으로 자리수를 지정해 출력한다. 

코드

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	int N;
	cin >> N;

	double num = pow(0.5, N);
	cout << fixed << setprecision(N);
	cout << num;
}

후기

지수연산에서 유한소수가 되기위해선 분모가 인수로 2또는 5만 가져야 한다고 한다. 해당문제에선 2를 가지므로 유한소수가 된다.
그리고 1/2의 ^N을 5/10의 ^N으로 바꾸면 분모가 10^N이므로 자리수가 N개가 나올 수 있다는걸 알수있다. 따라서 setprecision에 n값을 주면 문제없이 출력된다.
자리수에 대해 심오한 고민을 할 수 있는 문제였다.

0개의 댓글