코딩로그
[백준/BOJ/C++] 4892번 숫자 맞추기 게임 본문
[문제]
숫자 맞추기 게임은 초등학교 학생들 사이에서 유행하는 게임이다. 선생님은 학생들의 연산 실력과 논리적인 사고력을 기르기위해 학생들에게 이 게임을 권유하고 있다.
이 게임을 시작할 때는 친구가 숫자 하나를 머리속에 생각해야 한다. 이 숫자를 n0이라고 하자. 그러고 나서 다음과 같이 게임을 진행한다.
- 친구에게 n1 = 3*n0 계산을 하라고 한 뒤, n1이 짝수인지 홀수인지를 말해달라고 한다.
- n1이 짝수라면, n2 = n1/2를, 홀수라면 n2 = (n1+1)/2를 계산해달라고 한다.
- n3 = 3*n2의 계산을 부탁한다.
- 친구에게 n4 = n3/9를 계산한 뒤, 그 값을 말해달라고 한다. (n4는 나눗셈의 몫이다)
- 자 이제, n1이 짝수였다면, n0 = 2*n4로, 홀수였다면, n0 = 2*n4+1로 처음 친구가 생각한 숫자를 맞출 수 있다.
예를 들어, 친구가 생각한 수가 n0=37이었다면, n1 = 111이 되고 홀수이다. 그 다음 n2 = 56, n3 = 168, n4 = 18이 된다. 친구는 n4를 알려주게 된다.
그럼 2*n4+1 = 37이기 때문에, 친구가 제일 처음 생각한 숫자를 맞출 수 있다.
n0이 주어졌을 때, n1이 홀수인지 짝수인지와 n4를 구하는 프로그램을 작성하시오.
[입력]
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n0으로 이루어져 있다. (0 < n0 < 1,000,000) 입력의 마지막 줄에는 0이 하나 주어진다.
[출력]
각 테스트 케이스에 대해서, 케이스 번호를 출력하고 n1이 짝수라면 'even', 홀수라면 'odd'를 출력하고, n4를 출력한다.
[Source Code]
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
void answer(int n){
n = 3 * n;
if(n % 2 == 0){
cout << "even ";
n = n / 2;
}
else{
cout << "odd ";
n = (n+1) / 2;
}
n = 3 * n;
n = n / 9;
cout << n << "\n";
}
int main() {
int count = 0;
vector<int> vector;
while(true){
int input;
cin >> input;
if(input == 0) break;
vector.push_back(input);
count++;
}
for(int i = 0; i<vector.size(); i++){
cout << i+1 << ". ";
answer(vector[i]);
}
}
[결과 화면]
'YJ > C++' 카테고리의 다른 글
[백준/BOJ/C++] 22938번 백발백준하는 명사수 (0) | 2021.10.08 |
---|---|
[백준/BOJ/C++] 5217번 쌍의 합 (0) | 2021.10.08 |
[백준/BOJ/C++] 15596번 정수 N개의 합 (0) | 2021.10.08 |
[백준/BOJ/C++] 2577번 숫자의 개수 (0) | 2021.10.08 |
[백준/BOJ/C++] 2588번 곱셈 (0) | 2021.10.08 |