문제 이해를 잘 못해서 도움을 받은 문제..
연속된 666을 찾으면 되는건데, N번째로 작은 종말의 숫자와 같다. 작은!!!!!
그래서
666
1666
2666
.
.
5666
6666 <이 아니고 6660이다.
브루트포스 문제니까 그냥 하나씩 증가시켜가면서 만족하는지 보기로 했다.
cnt가 N이 될 때까지 반복한다.
가장 작은 종말의 숫자가 666이므로 while문은 tmp>=666까지만 반복하며,
종말의 숫자를 만족하면 cnt를 증가시키고, 아니면 1의 자리를 하나씩 지우는 식.
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
|
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int result = 665;
int cnt = 0;
while (cnt!=N) {
int tmp = ++result;
while (tmp >= 666) {
if (tmp % 1000 == 666) {
++cnt;
break;
}
tmp /= 10;
}
}
cout << result;
return 0;
}
|
cs |