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

C++에서 모든 순열이 해당 숫자보다 큰 자연수 계산


우리에게 num과 같은 자연수가 주어졌으며 모든 순열이 그 숫자보다 큰 모든 자연수의 개수를 계산하는 작업입니다.

다음 조건으로 작업하고 있습니다. -

  • 데이터는 자연수여야 합니다.

  • 자연수의 모든 가능한 순열이나 배열은 주어진 숫자보다 크거나 같아야 합니다. 예를 들어 숫자는 20입니다.

    • 1, 즉 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20

    • 이제 배열이나 순열이 주어진 숫자, 즉 20보다 크거나 같은 숫자를 확인하십시오. 숫자는 1, 2, 3, 4, 5, 6, 7, 8, 9, 11=11, 12<21, 13<31입니다. , 14<41, 15<51, 16<61, 17<71, 18<81, 19<91. 따라서 개수는 18이 됩니다.

입력 - 숫자 =10

출력 - 개수는 9입니다.

설명 - 숫자 1, 2, 3, 4, 5, 6, 7, 8, 9는 어떤 식으로든 배열했을 때 숫자와 같은 숫자입니다.

입력 - 숫자 =13

출력 - 개수는 12입니다.

설명 - 숫자 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12<21, 13<31은 어떤 식으로든 배열했을 때 그 숫자보다 큰 숫자입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 숫자 num의 값 입력

  • 숫자 자체보다 크거나 같은 순열을 갖는 숫자가 항상 9개 이상 있으므로 max_size를 9로 설정합니다.

  • 0에서 max_size까지 루프 시작

  • 루프 내에서 목록 유형 변수를 생성하고 i가 num IF yes보다 작거나 같은지 확인한 다음 i를 목록에 삽입하고 카운트를 1만큼 증가시킵니다.

  • 목록의 끝에서 시작까지 순회하고 첫 번째 요소에서 9까지 다른 루프를 시작합니다.

  • temp <=num인지 확인한 다음 목록의 맨 앞에 temp를 누르고 카운트를 1 증가

  • 개수 반환

  • 결과를 인쇄하십시오.

예시

#include<bits/stdc++.h>
using namespace std;
//function to Count natural numbers whose
//all permutation are greater than that number
void count(int num){
   int count = 0;
   int max_size = 9;
   for (int i = 1; i <= max_size; i++){
      list<int> lists;
      if (i <= num){
         //insert element at the end of the list
         lists.push_back(i);
         count = count + 1;
      }
      //iterator starts from the last of the list
      for(auto iter = lists.end(); iter != lists.begin(); ++iter){
         int first_ele = lists.front();
         lists.pop_front();
         for (int next = first_ele%10; next <= 9; next++){
            int temp = first_ele*10 + next;
            if (temp <= num){
               lists.push_front(temp);
               count++;
            }
         }
      }
   }
   cout<<"count of num "<<num <<" is "<<count<<endl;
}
int main(){
   count(1);
   count(9);
   count(7);
   count(0);
   count(12);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

count of num 1 is 1
count of num 9 is 9
count of num 7 is 7
count of num 0 is 0
count of num 12 is 11