문제
정답 코드
#include <iostream> using namespace std; #define ll long long int main() { ll n; cin >>n; ll go = 665; int i =0; int tmp; while(i <n) { tmp = go; while (tmp !=0) { if (tmp%1000 ==666) { i++; break; } else tmp /=10; } go++; } go--; cout << go; }
문제 풀이의 흐름
- 숫자가 실제로 어떻게 늘어나는가?
- 666이 첫번째
- 1666 2666 3666 4666 5666 6660 6661 6662 6663 6664 6665 6666 66676668 6669
- 7666
이런식이다.
즉 1000으로 나눴을 때 666이 나오는 경우에는 그게 첫번째 만약 아닌경우에는 1의 자리를 버리고 다시 1000으로 나눴을 때 나오는 나머지가 666인 경우에 문제이다.
주의 할 점
생각을 잘 하자..
반성 및 고찰
일단 문제가 잘 안 풀릴때는 직접 내가 기계라면 어떻게 생각할지를 컴퓨터의 입장에서 생각해보도록 노력하자.
Uploaded by
N2T