[백준 16515] Euler’s Number (C#, C++) - soo:bak
작성일 :
문제 링크
설명
오일러 수 e는 자연로그의 밑으로, 수학에서 특별한 위치를 차지합니다. n이 주어질 때 급수 공식을 이용하여 e를 근사하는 문제입니다.
e는 i가 0부터 n까지일 때 1/i! 을 모두 더한 값으로 근사할 수 있습니다. 0!은 1입니다.
접근법
먼저, 급수의 첫 항인 1/0!은 1이므로 합과 현재 항을 1로 시작합니다.
다음으로, i가 1부터 n까지 증가할 때마다 현재 항을 i로 나눕니다. 1/1!은 1/1, 1/2!은 1/2, 1/3!은 1/6 순으로 이전 항을 i로 나누면 자연스럽게 다음 항이 됩니다. 이 값을 합에 누적합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
var n = int.Parse(Console.ReadLine()!);
var sum = 1.0;
var term = 1.0;
for (var i = 1; i <= n; i++) {
term /= i;
sum += term;
}
Console.WriteLine(sum.ToString("0.000000000000"));
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
double sum = 1.0;
double term = 1.0;
for (int i = 1; i <= n; i++) {
term /= i;
sum += term;
}
cout << fixed << setprecision(12) << sum << "\n";
return 0;
}