Search

영화감독 숌

Created
2021/08/20 08:11
문제 번호
1436
카테고리
브루트포스

Memo

666이 들어간 숫자가 곧 시리즈의 숫자를 의미하므로 666이 수 표현 사이에 끼여 있어도 무방함을 의미
예를 들어 666이 1번 시리즈이고 1666이 2번 시리즈라면, 2666, 3666, 4666, 5666은 곧 3번, 4번, 5번, 6번 시리즈가 됨
단, 666이 수 표현 사이에 끼여 있어도 되므로 7번 시리즈는 6666이 아닌 6660
단순히 666이라는 숫자가 끼여 있으면 이것이 곧 시리즈의 표현이 되므로, 1씩 증가시켜 666이 포함되어 있는지 확인 후에 이를 시리즈 번호로 순차적으로 할당하면 됨
NN1000010000까지이고, 각 수를 10 단위로 쪼개서 666을 포함하고 있는지 반복문을 돌리게 되므로 반복 횟수는 10000×510000 \times 5 정도로 생각할 수 있으므로 시간 제한에 걸리지 않음

Code

제출 날짜

@8/20/2021

메모리

2020 KB

시간

24 ms
#include <iostream> int g_series; int g_answer; void pre_setting(void) { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); } void input_action(void) { std::cin >> g_series; } void solution(void) { int i; int tmp; int cnt; i = 0; cnt = 0; while (i != g_series) { tmp = ++cnt; while (tmp) { if (tmp % 1000 == 666 && ++i) break; tmp /= 10; } } g_answer = cnt; } void output_action(void) { std::cout << g_answer; } int main(void) { pre_setting(); input_action(); solution(); output_action(); return (0); }
C++
복사