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값을 주면 문제없이 출력된다.
자리수에 대해 심오한 고민을 할 수 있는 문제였다.