https://www.acmicpc.net/problem/1436
#include <iostream>
using namespace std;
int main()
{
int n;
int cnt = 0, ans = 665;
cin >> n;
while(cnt != n){
ans++;
int temp = ans;
while(temp >= 666){
if(temp % 1000 == 666) {
cnt++;
break;
} else {
temp /= 10;
}
}
}
cout << ans;
return 0;
}
6이 3개 이상 연속으로 들어간 수를 만들어내는 것은 어렵다.
대신 666부터 자연수 하나하나를 6이 3개 이상 들어간 수인지 확인하는 것이 쉽다.
따라서 어떤 자연수를 1000으로 나누었을 때 나머지가 666이라면 cnt
를 증가시켜 해당 수가 cnt번째로 작은 종말의 수로 설정한다.
그런데 166699처럼 1000으로 나누어도 나머지가 666이 되지 않는 수의 경우를 생각해야 하므로, 필요없는 자리의 수들을 지우기 위해 10으로 나눠준다.