반응형
내가 한 풀이
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;;
double result = 1;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 1)
{
result -= 1 / pow(2, i);
}
else
result += 1 / pow(2, i);
}
cout << fixed;
cout.precision(4);
cout << result << endl;
}
if문과 else를 통해 풀었습니다. pow()를 통해 해주었으며 함수를 조절할 때는 precision(4)를 통해서 네번째 자리 수까지 나오도록 지정을 해주었습니다.
다른 풀이
#include <iostream>
using namespace std;
int main() {
int n, denom = 1, sign = 1;
cin >> n;
double sum = 0;
for (int i = 0; i <= n; i++) {
sum += sign * 1.0 / denom;
denom *= 2;
sign *= -1;
}
cout << sum << endl;
return 0;
}
역시 갓오흠 교수님 답게 정말 깔끔하게 풀었습니다. 제꺼와 비교를 했을 때 제 코드가 많이 부끄러워지네요.
일단 int n, denom = 1, sign =1 로 초기화를 해주었습니다.
그리고 sum = 0 으로 초기화를 해주었습니다.
그 다음 for문을 통해 0일때는 1이 나오고 sign을 통해서 -1 1 이 번갈아가면서 나오게 부호를 바꾸어 주었으며 denom을 통해서 계속해서 제곱을 구해주었습니다. 이렇게 하면 제가 원하는 식이 저절로 나오게 되는 것입니다.
문제를 자세히 살펴보니 3째 자리 이후로는 예시와 달라도 괜찮다고 나와있네요.
반응형
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
[C++] 세 정수 오름차순 정렬 (0) | 2024.04.17 |
---|---|
[c++] 하나의 정수 n을 받은 후 합을 구하는 프로그램 (0) | 2024.04.17 |
[c++] 중복 숫자 제거 벡터 사용 (0) | 2024.04.17 |
[C++] static정의 참조 배열에 대한 예시 문구 (0) | 2024.04.17 |
객체지향프로그래밍 그룹액티비티 2문제 (0) | 2024.04.16 |