-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Gold V] Title: Moo 게임, Time: 0 ms, Memory: 2020 KB -BaekjoonHub
- Loading branch information
Showing
2 changed files
with
82 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#include <iostream> | ||
#include <algorithm> | ||
#include <vector> | ||
|
||
using namespace std; | ||
|
||
int main() { | ||
ios_base::sync_with_stdio(0); | ||
cin.tie(0); | ||
|
||
int n; | ||
cin >> n; | ||
|
||
int len = 3; | ||
int mid = 3; | ||
|
||
while (n > len) { | ||
mid++; | ||
len = len * 2 + mid; | ||
} | ||
|
||
while(true) { | ||
int prev = (len-mid) / 2; | ||
|
||
if (n <= prev) { | ||
mid--; | ||
len = prev; | ||
} else if (n > prev + mid) { | ||
n -= prev + mid; | ||
mid--; | ||
len = prev; | ||
} else { | ||
n -= prev; | ||
break; | ||
} | ||
} | ||
if (n == 1) cout << "m"; | ||
else cout << "o"; | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# [Gold V] Moo 게임 - 5904 | ||
|
||
[문제 링크](https://www.acmicpc.net/problem/5904) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 2020 KB, 시간: 0 ms | ||
|
||
### 분류 | ||
|
||
분할 정복, 재귀 | ||
|
||
### 제출 일자 | ||
|
||
2024년 4월 25일 03:44:27 | ||
|
||
### 문제 설명 | ||
|
||
<p>Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다.</p> | ||
|
||
<p>Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. </p> | ||
|
||
<pre>m o o m o o o m o o m o o o o m o o m o o o m o o m o o o o o </pre> | ||
|
||
<p>Moo 수열은 다음과 같은 방법으로 재귀적으로 만들 수 있다. 먼저, S(0)을 길이가 3인 수열 "m o o"이라고 하자. 1보다 크거나 같은 모든 k에 대해서, S(k)는 S(k-1)과 o가 k+2개인 수열 "m o ... o" 와 S(k-1)을 합쳐서 만들 수 있다.</p> | ||
|
||
<pre>S(0) = "m o o" | ||
S(1) = "m o o m o o o m o o" | ||
S(2) = "m o o m o o o m o o m o o o o m o o m o o o m o o"</pre> | ||
|
||
<p>위와 같은 식으로 만들면, 길이가 무한대인 문자열을 만들 수 있으며, 그 수열을 Moo 수열이라고 한다.</p> | ||
|
||
<p>N이 주어졌을 때, Moo 수열의 N번째 글자를 구하는 프로그램을 작성하시오.</p> | ||
|
||
### 입력 | ||
|
||
<p>첫째 줄에 N (1 ≤ N ≤ 10<sup>9</sup>)이 주어진다.</p> | ||
|
||
### 출력 | ||
|
||
<p>N번째 글자를 출력한다.</p> | ||
|