출처 : 반크_반크 20년 백서
문제]
우리 학교에는 복도 불을 켜고 끄는 마부(Mabu)라는 사람이 있다. 전구마다 불을 켜고 끄는 스위치가 있다. 불이 꺼져 있을 때 스위치를 누르면 불이 켜지고 다시 스위치를 누르면 불이 꺼진다. 처음에는 모든 전구가 꺼져 있다.
마부라는 사람은 특이한 행동을 한다. 복도에 n개의 전구가 있으면 복도를 n번 왕복한다. i번째 갈 때 그는 i로 나누어 떨어지는 위치에 있는 스위치만 누른다. 처음 위치로 돌아올 때는 아무 스위치도 건드리지 않는다. i번째 왕복은 (이런 이상한 행동을 하면서) 복도를 한 번 갔다가 오는 것으로 정의된다. 마지막 전구의 최종 상태를 알아내자. 과연 그 전구는 켜져 있을 까 아니면 꺼져 있을까?
입력
복도에 있는 n번째 전구를 나타내는 2^32-1이하의 정수가 입력된다. 0은 입력의 끝을 의미하며 그 값은 처리하지 않는다.
출력
그 전구가 켜져있으면 "yes"를, 꺼져 있으면 "no"를 출력한다. 테스트 케이스 마다 한 줄에 하나씩 출력한다.
입력 예
3
6241
8191
0
출력 예
no
yes
no
출처]
Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제 49 빛, 더 많은 빛(Light, More Light) p194
참고풀이]
#include <stdio.h>
#include <math.h>
int main()
{
unsigned int n;
unsigned int s;
while(scanf("%lu",&n),n!=0)
{
if(n<=(unsigned int)pow(2,31)-1)
{
s=(unsigned int)sqrt(n);
if(s*s == n) //n의 수가 완전수인지 체크
printf("yes\n");
else
printf("no\n");
}
else
return 0;
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 겨울
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 223제] 카마이클 수(Carmichael Numbers) (0) | 2025.01.30 |
---|---|
C언어 221제] 단계(Steps) (0) | 2025.01.29 |
C언어 220제] 자기기술 수열(Self-describing Sequence) (0) | 2025.01.28 |
C언어 219제] 다항식의 계수(Polynomial Coefficients) (0) | 2025.01.21 |
C언어 218제] 곱하기 게임(A Multiplication Game) (0) | 2025.01.21 |
댓글