이 질문에는 정수 배열이 제공됩니다. 모든 요소를 정수로 결합하고 그것이 하샤드 수인지 확인해야 합니다.
해결책으로 넘어가기 전에 하샤드 수(Harshad number)에 대해 알아보겠습니다. 모든 숫자는 숫자의 합으로 나누어지는 하샤드 수입니다. 예를 들어, 12는 1+2의 합인 3으로 나누어지기 때문에 12는 하샤드 수입니다.
이 문제를 해결하려면 모든 배열 요소를 추가한 다음 결과가 하샤드 수인지 확인할 수 있습니다.
문제 설명 - 정수 배열이 제공됩니다. 모든 요소를 숫자로 결합하고 결합된 숫자가 하샤드 숫자인지 확인해야 합니다.
입력 – arr = {1, 35, 69, 60};
출력-예
Explanation - 결과 숫자 1356960은 합으로 나눌 수 있습니다.
입력 – arr = {1, 65, 78, 1}
Output – 아니요
설명 - 결합된 숫자 165781은 28로 나누어지지 않습니다.
입력 – arr = {1, 44}
출력-예
설명——144는 9로 나누어집니다.
이 방법은 모든 배열 요소를 하나의 문자열로 결합합니다. 그런 다음 stoi() 메서드를 사용하여 결합된 문자열을 정수로 변환합니다. 그런 다음 모듈로 연산자를 사용하여 숫자가 숫자의 합으로 나누어지는지 확인할 수 있습니다.
"결합된" 문자열 변수를 정의하고 빈 문자열로 초기화합니다.
정수 배열을 반복합니다. to_string() 메서드를 사용하여 숫자를 문자열로 변환합니다. 그런 다음 "결합된" 변수에 추가합니다.
변수 'sum'을 정의하고 0으로 초기화하여 숫자의 합을 저장합니다.
결합된 문자열을 반복하고 각 숫자의 합을 저장합니다.
stoi() 메서드를 사용하여 결합된 문자열을 정수로 변환합니다. 그 후에 정수는 모듈로로 취해지며 결과에 따라 부울 값이 반환됩니다.
시간 복잡도 - 문자열을 반복하므로 O(N)입니다.
공간 복잡도 - 추가 공간을 사용하지 않으므로 O(1)입니다.
이 방법에서는 결합된 정수의 각 작은 블록에 대해 모듈로 연산을 수행하고 큰 정수가 그 합으로 나누어지는지 확인합니다.
"결합된" 문자열 변수를 정의합니다.
정수 배열을 반복하고 모든 정수 조합을 'combined' 변수에 저장합니다.
숫자의 합을 "sum" 변수에 저장하세요
루프를 사용하여 "결합된" 문자열을 반복합니다.
'현재' 변수를 정의하고 0으로 초기화합니다
'현재' 변수에 10을 곱하고 현재 숫자 값을 더합니다. 그런 다음 결과 값을 'current' 변수에 저장합니다.
'현재'와 합계에 대해 모듈로 연산을 수행합니다.
루프의 모든 반복이 완료되면 "현재" 변수의 값이 0이면 true를 반환합니다. 현재 변수의 값이 0이 아니면 false를 반환합니다.
시간 복잡도 - O(N)
공간 복잡성 - O(1)
우리는 문제를 해결하는 두 가지 방법을 배웠습니다. 첫 번째 방법은 배열에 더 적은 수의 요소가 포함된 경우에만 사용됩니다. 왜냐하면 stoi() 메서드에는 문자열을 정수로 변환할 때 몇 가지 제한 사항이 있기 때문입니다. 두 번째 방법은 일반적이며 N개의 배열 요소에 사용할 수 있습니다.
위 내용은 배열 요소를 연결하여 형성된 숫자가 해시된 숫자인지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!