정수 유형의 숫자가 주어집니다. 예를 들어 숫자입니다. 과제는 재배열 후에 형성된 숫자가 주어진 숫자, 즉 '숫자'로 나눌 수 있는 방식으로 숫자 자릿수를 재배열하는 것입니다.
여기에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다 -
입력 - 정수 =100035
출력 − 그것으로도 나누어지는 숫자의 재배열:300105
설명 - 우리는 '숫자', 즉 100035와 같은 정수가 주어집니다. 이제 작업은 형성된 숫자가 100035로 나누어 떨어지는 방식으로 이러한 주어진 숫자를 재배열하는 것입니다. 따라서 숫자를 재배열한 후 300105를 얻었으며 이 값은 100035로 나눌 수 있습니다.
입력 - 정수 =1000035
출력 − 그것으로도 나누어지는 수의 재배열:3000105
설명 - 우리는 '숫자', 즉 1000035와 같은 정수가 주어집니다. 이제 작업은 형성된 숫자가 1000035로 나누어 떨어지는 방식으로 이러한 주어진 숫자를 재배열하는 것입니다. 따라서 숫자를 재배열한 후 나눌 수 있는 3000105를 얻었습니다 1000035번으로.
입력 - 정수 =28
출력 − 그것으로도 나누어지는 수의 재배열:-1
설명 - 우리는 '숫자', 즉 28이라는 정수가 주어집니다. 이제 작업은 형성된 숫자가 28로 나누어 떨어지는 방식으로 이러한 주어진 숫자를 재배열하는 것입니다. 숫자 28로 나눌 수 있으므로 출력은 -1입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
정수형 변수를 입력하고, 예를 들어 숫자를 입력하고 데이터를 재배열(숫자) 함수에 전달합니다.
-
함수 내부 재정렬(숫자)
-
정수형 변수를 저장하는 벡터형 변수를 생성합니다(예:vec(10, 0)).
-
total_count(number, vec) 함수를 호출하고 number와 vec를 함수의 매개변수로 전달합니다.
-
i에서 2까지 FOR 루프를 시작하여 i가 10보다 작을 때까지 반복합니다. 루프 내부에서 temp를 number * i로 설정합니다.
-
정수형 변수를 저장하는 벡터형 변수를 생성합니다. 예를 들어 vec_2(10, 0)입니다.
-
total_count(number, vec_2) 함수를 호출하고 number와 vec_2를 함수의 매개변수로 전달합니다.
-
IF equal(vec.begin(), vec.end(), vec_2.begin())을 확인한 다음 temp를 반환합니다. 그렇지 않으면 -1을 반환합니다.
-
-
total_count(int number, vector
함수 내부&vec_3) -
루프 시작 WHILE 번호는 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; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Rearrangement of a number which is also divisible by it is: 300105