작성일 :

문제 링크

16515번 - Euler’s Number

설명

오일러 수 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;
}