본문 바로가기

codeforce/#614 (Div.2)

Codeforces Round #614 (Div.2 ) B. JOE is on TV!

JOE가 퀴즈 쇼에 나가 최대의 상금을 받는다면, 얼마를 받을 지 출력하는 문제입니다.

라운드의 생존자가 s명, 오답자가 t명일 때 JOE는 t/s 달러 만큼의 돈을 받게 됩니다.

2명일 때는 1/2 + 1/1 = 1.5 입니다.

3명일 때는 2가지 방법이 있습니다.

1) 1명씩 탈락하는 경우

1/3 + 1/2 + 1/1 = 11/6 가 됩니다.

2) 2명이 탈락하는 경우

2/3 + 1/1 = 10/6 이 됩니다.

여기서 우리는 1/3 + 1/2 > 2/3 인 것을 알 수 있고, 각 라운드에 1명씩만 탈락하는 것이 2명 이상 탈락하는 것보다 이득임을 알 수 있습니다. 따라서 정답은 1/1 + 1/2 + ... + 1/n 이 됩니다.

#include <iostream>

using namespace std;

int main(){
    int input;
    cin >> input ;

    long double result = 0;
    for (int i = input ; i >=1 ; i --){
        result += (long double) 1 / (long double) i;
    }
    cout << result << endl;
    return 0;
}
반응형