>백엔드 개발 >C++ >C++에서 재정렬할 수 있는 숫자를 재정렬합니다.

C++에서 재정렬할 수 있는 숫자를 재정렬합니다.

王林
王林앞으로
2023-09-05 22:49:06776검색

C++에서 재정렬할 수 있는 숫자를 재정렬합니다.

숫자라고 가정하면 정수형의 숫자가 주어집니다. 이 작업은 재정렬된 숫자가 주어진 숫자로 나누어질 수 있도록 숫자의 자릿수를 재정렬하는 것입니다.

다양한 입력 및 출력 시나리오를 살펴보겠습니다.

Input - int number = 100035

Output - 재배치 후 숫자로 나눌 수 있는 숫자는 300105

설명 - 우리는 정수, 즉 100035입니다. 이제 과제는 형성된 숫자가 숫자로 나누어질 수 있도록 주어진 숫자를 재배열하는 것입니다. 100035. 따라서 숫자를 다시 배열하면 100035로 나누어지는 300105가 됩니다.

Input - int 숫자 = 1000035

Output - 재배열된 숫자도 이것으로 나눌 수 있습니다: 3000105

Explanation - 정수 "숫자"는 1000035입니다. 이제 과제는 형성된 숫자가 1000035로 나누어지도록 주어진 숫자를 재배열하는 것입니다. 따라서 숫자를 다시 배열하면 1000035로 나누어지는 3000105가 됩니다.

Input - int 숫자 = 28

Output - 재배열된 숫자도 이것으로 나눌 수 있습니다: -1

Explanation - 정수 "숫자"는 28입니다. 이제 과제는 형성된 숫자가 28로 나누어지도록 주어진 숫자를 재배열하는 것입니다. 따라서 숫자를 재배열하면 숫자 28로 나누어지지 않는 82를 얻게 되므로 출력은 -1이 됩니다.

아래 프로그램에서 사용한 방법은 다음과 같습니다

  • 숫자라고 가정하고 정수형의 변수를 입력하고 그 데이터를 재정렬(숫자) 함수에 전달합니다.

  • 재배열(숫자) 함수에서

    • vec(10, 0)이라고 가정하고 정수형 변수를 저장하는 벡터 변수를 만듭니다.

    • total_count(number, vec) 함수를 호출하고 number와 vec를 함수에 매개변수로 전달합니다.

    • i가 10보다 작을 때까지 i에서 2까지의 루프로 시작하세요. 루프 내에서 temp를 숫자 * i로 설정합니다.

    • vec_2(10, 0)이라고 가정하고 정수형 변수를 저장하는 벡터 변수를 만듭니다.

    • total_count(number, vec_2) 함수를 호출하고 number와 vec_2를 함수에 매개변수로 전달합니다.

    • 동일(vec.begin(), vec.end(), vec_2.begin())인지 확인한 다음 temp를 반환합니다. 그렇지 않으면 -1이 반환됩니다.

  • 함수 total_count(int number, vector &vec_3)에서

    • 숫자가 1일 때 루프를 시작합니다. 루프 내에서 vec_3을 vec_3[number % 10]++로 설정하고 number를 number/10으로 설정합니다.

예제

#include<bits/stdc++.h>
using namespace std;
void total_count(int number, vector<int> &vec_3){
   while(number){
      vec_3[number % 10]++;
      number = number / 10;
   }
}
int Rearrangement(int number){
   vector<int> vec(10, 0);
   total_count(number, vec);
   for(int i = 2; i < 10; i++){
      int temp = number * i;
      vector<int> vec_2(10, 0);
      total_count(temp, vec_2);
      if(equal(vec.begin(), vec.end(), vec_2.begin())){
         return temp;
      }
   }
   return -1;
}
int main(){
   int number = 100035;
   cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number);
   return 0;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다

Rearrangement of a number which is also divisible by it is: 300105

위 내용은 C++에서 재정렬할 수 있는 숫자를 재정렬합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제