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;
}
반응형
'codeforce > #614 (Div.2)' 카테고리의 다른 글
Codeforces Round #614 (Div.2 ) D. Aroma's Search (0) | 2020.02.02 |
---|---|
Codeforces Round #614 (Div.2 ) C. NEKO's Maze Game (0) | 2020.02.02 |
Codeforces round #614 (Div.2 ) A. ConneR and the A.R.C. Markland-N (0) | 2020.02.01 |