Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 가장 가깝고 작은 정수 찾기

<시간/>

숫자 n이 있다고 가정하면 n의 가장 가깝고 작은 깔끔한 수를 찾아야 합니다. 따라서 모든 숫자가 내림차순으로 정렬되어 있는 경우 수를 깔끔한 수라고 합니다. 따라서 숫자가 45000이면 가장 가깝고 작은 깔끔한 숫자는 44999가 됩니다.

이 문제를 해결하기 위해, 우리는 끝에서 숫자를 순회할 것입니다. 깔끔함 속성이 위반되면 숫자를 1로 줄이고 모든 후속 숫자를 9로 만듭니다.

예시

#include<iostream>
using namespace std;
string tidyNum(string number) {
   for (int i = number.length()-2; i >= 0; i--) {
      if (number[i] > number[i+1]) {
         number[i]--;
         for (int j=i+1; j<number.length(); j++)
            number[j] = '9';
      }
   }
   return number;
}
int main() {
   string str = "45000";
   string num = tidyNum(str);
   cout << "The tidy number is: " << num;
}

출력

The tidy number is: 44999