Notice
Recent Posts
Recent Comments
Link
DY N DY
실력키우기 이진수(C++) 본문
2814 : 이진수
제한시간: 1Sec 메모리제한: 128mb
해결횟수: 443회 시도횟수: 825회
컴퓨터는 내부적으로 0과 1 두 개의 숫자만을 사용하여 모든 프로그램이 동작된다.
이렇게 두 개의 숫자만으로 이루어진 수를 이진수라 한다.
2진수를 입력받아 10진수로 변환하여 출력하는 프로그램을 작성하시오.
[Copy]10101 | [Copy]21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /************************************************************** Problem: 2814 User: a132034 Language: C++ Result: Success Time:0 ms Memory:1740 kb ****************************************************************/ #include <iostream> using namespace std; int main() { char bi[30]; gets (bi); int b = 1; int res = 0; int length = 0; for ( int i = 0; bi[i] != '\0' ; ++i) { length = i; } for ( int i = length; i >= 0; --i) { if (bi[i] == '1' ) res += b; b *= 2; } cout << res; return 0; } |
이진수를 받아 10진수로 바꾸는 프로그램과 크게 다른 것은 없으나 한가지 다른 점은
길이가 1~30까지 가변적으로 입력될 수 있다는 것.
사실 int로 받아서 나눗셈을 이용해서 배열에 넣어도 전혀 상관 없지만, 이렇게 char형에 넣어도 푸는데 지장은 없음.
첫 번째 for문은 받은 배열의 길이를 측정하기 위한 것.
두 번째는 2진수를 10진수로 변환.
'PARK > ALGORITHM' 카테고리의 다른 글
실력키우기 그릇(JAVA) (0) | 2016.04.06 |
---|---|
실력키우기 윤년(C) (0) | 2016.04.06 |
실력키우기 2진수를 10진수로(JAVA) (0) | 2016.04.04 |
실력키우기 팩토리얼(C++) (0) | 2016.04.02 |
실력키우기 10진수를 2진수로(JAVA) (1) | 2016.04.01 |