https://www.acmicpc.net/problem/11966
11966번: 2의 제곱인가?
자연수 N이 주어졌을 때, 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
c++로 백준 11966번 문제를 풀어보겠다.
문제
자연수 N이 주어졌을 때, 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 230)이 주어진다.
출력
N이 2의 제곱수면 1을 아니면 0을 출력하는 프로그램을 작성하시오.
예제 입력 1 복사
1
예제 출력 1 복사
1
<문제 풀이>
1. N을 선언한 후 입력받는다.
2. 입력받은 N이 1이라면 '1'을 출력한다.
3. 입력받은 N이 1이 아니라면 while 반복문을 통해 N이 2의 제곱수인지 판별한다.
- while 반복문 코드 내용 -
1) N을 2로 나누었을 때 나머지가 0으로 나누어 떨어지지 않는다면, '0'을 출력하고 반복문을 종료한다.
2) N을 2로 나누었을 때 나머지가 0으로 나누어 떨어진다면, N을 2로 나눈 몫을 다시 N에 저장한다.
3) 만약 위의 계산이 끝난 후 N이 1이 되었다면 '1'을 출력하고 반복문을 종료한다.
N을 2로 나누었을 때 0으로 나누어 떨어졌을 경우(2번째 줄의 경우) while문을 계속 반복한다.
(1 또는 3의 경우가 나와 반복문이 종료될 때까지 반복함.)
코드는 다음과 같다.
'C++' 카테고리의 다른 글
[백준 알고리즘] 11931번 : 수 정렬하기 4, c++ (0) | 2022.03.07 |
---|---|
[백준 알고리즘] 5532번 : 방학 숙제, c++ (0) | 2022.03.07 |
[백준 알고리즘] 2675번 : 문자열 반복, c++ (0) | 2022.03.06 |
[백준 알고리즘] 1316번 : 그룹 단어 체커, c++ (0) | 2022.03.06 |
[백준 알고리즘] 1269번 : 대칭 차집합, c++ (0) | 2022.03.05 |