Search

감소하는 수

Created
2021/03/23 01:58
문제 번호
1038
카테고리
브루트포스
백트래킹

Memo

Code

제출 날짜

@6/27/2020

메모리

1984 KB

시간

0 ms
#include <iostream> #include <queue> typedef long long lld; std::queue<lld> generateDesc; int inputValue; int descCount = 0; void input() { std::cin >> inputValue; } bool isInputOneDigit() { if (inputValue < 10) { return true; } return false; } void enqueueOneDigit() { for (int i = 1; i < 10; i++) { generateDesc.push(i); ++descCount; } } void repetitiveRestDigits() { while (1) { lld pivotNumber = generateDesc.front(); generateDesc.pop(); int restNumber = pivotNumber % 10; for (int i = 0; i < restNumber; i++) { lld queueingNumber = pivotNumber * 10 + i; if (++descCount == inputValue) { std::cout << queueingNumber; return; } generateDesc.push(queueingNumber); } } } void solution() { input(); if (inputValue >= 1023) { std::cout << -1; } else if (isInputOneDigit()) { std::cout << inputValue; } else { enqueueOneDigit(); repetitiveRestDigits(); } } int main() { solution(); return 0; }
C++