두 개의 숫자가 주어졌을 때, 우리의 임무는 세 개의 숫자가 모두 합쳐 9자리 팬 숫자를 형성하도록 다른 두 숫자를 곱하여 주어진 숫자가 얻어지는지 알아내는 것입니다.
즉, 주어진 숫자가 다른 두 숫자와 결합될 때 원래 숫자의 전체 숫자를 얻기 위해 곱셈 연산을 형성하는지 알아내야 한다고 말할 수 있습니다.
문제에 대한 여러 솔루션을 얻을 수 있는 상황이 많을 수 있으며, 최고의 시간 복잡도를 얻으려면 찾은 첫 번째 솔루션을 인쇄하고 반복 프로세스를 중지하면 됩니다.
해결책: 먼저 전체 숫자가 무엇인지 토론해 보겠습니다. -
n자리 숫자는 1부터 n까지의 모든 숫자를 정확히 한 번만 사용하는 경우에만 팬넘버라고 합니다. 즉, 숫자는 한 번에 한 자리만 사용하여 1부터 n까지의 모든 숫자의 순열로 표현될 수 있습니다.
예를 들어 6745312는 1부터 7까지의 모든 숫자를 사용하기 때문에 7자리 팬 번호입니다
이제 몇 가지 예를 통해 이 문제를 이해해 보겠습니다.
으아악우리 모두 알고 있듯이 7254는 39와 186의 곱으로 표현할 수 있습니다.
39, 186, 7254를 더하면 1부터 9까지의 모든 숫자가 포함된 391867254가 됩니다. 각 숫자는 한 번만 사용됩니다. 즉, 9자리로 구성된 전체 숫자 숫자입니다.
으아악이제 이 문제를 해결하는 방법에 대해 논의해 보겠습니다−
먼저 곱이 주어진 숫자와 같은 모든 숫자 쌍을 찾아 확인합니다. 그런 다음 가능한 각 솔루션 번호 쌍에 대해 문자열을 생성하고 세 가지 숫자(원래 번호와 제품이 해당 번호가 되도록 하는 두 가지 요소)를 모두 저장합니다.
이제 우리 솔루션에 적합한 알고리즘을 찾아보겠습니다.
1단계 - 루프를 반복하여 해당 숫자에 대한 모든 요소 쌍을 확인합니다.
2단계 − 요인의 각 부분에 대해 원래 숫자와 두 요인을 포함하는 문자열을 만듭니다.
3단계 - sort() 함수를 사용하여 형성된 문자열을 정렬합니다.
4단계 - 이제 또 다른 문자열 "123456789"를 생성하겠습니다.
5단계 - 두 문자열을 비교하고 동일하면 true를 반환합니다.
이 메서드의 코드는 다음과 같습니다. -
으아악시간 복잡도 - 1부터 sqrt(n)까지 반복하는 단일 루프를 사용하므로 이 솔루션의 시간 복잡도는 O(N^1/2)
입니다.공간 복잡도 - 코드에 추가 메모리가 필요하지 않으므로 공간 복잡도는 선형입니다(예: O(1)).
이 글에서는 정수가 무엇인지, 그리고 주어진 숫자와 그 인수(쌍)가 곱셈 뒤에 문자열로 결합될 때 9자리 정수가 되는지 알아보는 효율적인 방법을 연구합니다.
위 내용은 만능 디지털 제품의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!