문제
문제 링크
해설
- 함정문제입니다.
- 0666, 1666, 2666, 3666, 4666, 5666,
- 6660, 6661, …., 6669, 7666, 8666, 9666
- 총 19개… 그게 10666부터 11666까지…
- 이렇게 빠져들기 시작하면 이 문제의 함정에 빠진 것입니다 ㅎㅎ
- 함정에 걸리는 가장 큰 이유는 N이 10,000까지 가능하기 때문인데, 10,000번째 종말의 수가 오버플로우가 될 수도 있다고 생각했기 때문입니다. 아는 만큼 함정에 더 걸리기 쉬운 문제죠.
- 되려 단순하게 1부터 카운팅하면서 666으로 나머지연산(%)하면 됩니다.
코드
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int N;
cin >> N;
int answer = 0;
int num = 665;
while (answer != N) {
num++;
int temp = num;
while (temp) {
if (temp % 1000 == 666) {
answer++;
break;
}
temp /= 10;
}
}
cout << num << '\n';
return 0;
}
소스코드 링크
결과