2014년 7월 7일 월요일

2877 4와 7

4와 7로 이루어진 k번째 작은 수를 구하는 문제이다.

4와 7을 0과 1로 바꿔서 생각하면 2진수가 떠오를 것이다.

0 - 4
1 - 7
로 바꿔서 생각하면 되는데,
여기서 주의해야 할것은 2자리수를 넘어가면 앞이 무조건 7이 된다는것이다.
ex)
0 - 4
1 - 7
10 - 74(정답은 44)
11 - 77(정답은 47)

이럴땐 맨앞에 1이 있다고 가정한 후, 맨앞은 계산하지 않으면 된다.
ex)
10 - 4
11 - 7
100 - 44
101 - 47
110 - 74
~

이 문제에선 K에 1을 더해주면 저 조건이 완성된다.
그 후엔 비트연산자를 통해 K의 자리수를 알아내고 높은 자리수부터 낮춰가면서 출력하면 된다.

소스

댓글 없음:

댓글 쓰기