E D R , A S I H C RSS

An Easy Problem

Difference between r1.1 and the current

@@ -1,70 +1,40 @@
Describe AnEasyProblem here / 권순의
 
=== Source ===
{{{
#include <IOStream>
#include <cmath>
 
using namespace std;
 
int main()
{
int getNum = -1;
int getBinary[21];
int min = 0;
int output = 0;
 
while(getNum != 0)
{
cin >> getNum;
 
for(int i = 0; i < 21; i++)
{
getBinary[i] = 0;
}
 
if((getNum > 0) && (getNum <= 1000000))
{
for(int i = 0; i < 21; i++)
{
getBinary[i] = getNum % 2;
getNum /= 2;
cout << getBinary[i];
}
[http://poj.org/problem?id=2453 원문보기]
== Description ==
아시다시피, 데이터는 컴퓨터에 이진수 형태로 저장됩니다. 우리가 토론할 문제는 양의 정수와 수의 이진 형태입니다.

cout << endl;
양의 정수 I가 주어지면, 당신이 할 일은 I보다 큰 수 중 가장 작은 수 J를 찾습니다. I의 이진수 형태에서의 1의 개수와 J의 이진수 형태에서의 1의 개수는 일치합니다.

getNum = 1;
예를들어, "78"이 주어지면, 여러분은 "1001110"과 같은 이진수 형태로 쓸 수 있습니다. 이 이진수는 4개의 1을 가지고 있습니다. "1001110" 보다 크고 4개의 1을 포함하는 가장 작은 정수는 "1010011"입니다. 출력값은 "83"이 되어야 합니다.

for(int i = 0; i < 21; i++)
{
if(getBinary[i] == 1)
{
if(getBinary[i + 1] == 0)
{
getBinary[i + 1] = 1;
getBinary[i] = 0;
i++;
}else{
getBinary[i] = 0;
getBinary[min++] = 1;
}
}
=== Input ===
줄에 한개의 정수를 입력할 있습니다. (1 <= I <= 1000000)
0이 나오면 입력을 종료합니다. 줄은 작업할 필요 없습니다.

cout << getBinary[i];
output += (int)(getBinary[i] * pow(2.0, i));
}
cout << endl << output << endl;
}else if(getNum == 0){
break;
}else{
cout << "잘못된 입력입니다." << endl;
break;
}
}
=== Output ===
줄에 한개의 정수를 출력하면 됩니다.

return 0;
}
=== Sample Input ===
{{{
1
2
3
4
78
0
}}}
=== Sample Output ===
{{{
2
4
5
8
83
}}}
== 풀이 ==
|| 작성자 || 사용언어 || 개발시간 || 코드 ||
|| [권순의] || - || - || [An Easy Problem/권순의] ||
|| [김태진] || - || - || [An Easy Problem/김태진] ||
|| [정진경] || - || - || [An Easy Problem/정진경] ||
 
----
[문제분류],[http://poj.org/problem?id=2453 An Easy Problem ], [ACM_ICPC/2011년스터디]



Description

아시다시피, 데이터는 컴퓨터에 이진수 형태로 저장됩니다. 우리가 토론할 문제는 양의 정수와 이 수의 이진 형태입니다.

양의 정수 I가 주어지면, 당신이 할 일은 I보다 큰 수 중 가장 작은 수 J를 찾습니다. I의 이진수 형태에서의 1의 개수와 J의 이진수 형태에서의 1의 개수는 일치합니다.

예를들어, "78"이 주어지면, 여러분은 "1001110"과 같은 이진수 형태로 쓸 수 있습니다. 이 이진수는 4개의 1을 가지고 있습니다. "1001110" 보다 크고 4개의 1을 포함하는 가장 작은 정수는 "1010011"입니다. 출력값은 "83"이 되어야 합니다.

Input

각 줄에 한개의 정수를 입력할 수 있습니다. (1 <= I <= 1000000)
0이 나오면 입력을 종료합니다. 이 줄은 작업할 필요 없습니다.

Output

각 줄에 한개의 정수를 출력하면 됩니다.

Sample Input

1
2
3
4
78
0

Sample Output

2
4
5
8
83
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:27
Processing time 0.0407 sec