목차
문제 설명
예 2
방법 1: 무차별 크래킹
알고리즘
예: C++ 구현
출력
방법 3
결론
백엔드 개발 C++ 간격의 최대 공약수

간격의 최대 공약수

Sep 01, 2023 am 10:09 AM
최대공약수 간격

간격의 최대 공약수

x와 y를 두 개의 숫자로 둡니다. 이 경우, y를 x로 나눌 때 나머지가 0인 경우 x는 y의 제수라고 합니다. 구간에서 발생하는 가장 큰 약수는 구간에 있는 요소의 가장 큰 수의 약수입니다.

문제 설명

간격 [a, b]가 주어졌습니다. a와 b를 포함하는 범위("1" 제외)에서 나타나는 가장 큰 제수를 찾습니다. 모든 제수가 동일한 횟수로 나타나는 경우 1을 반환합니다.

예 1

으아악 으아악

설명 - 2의 약수 = {1, 2}, 3의 약수 = {1, 3}, 4의 약수 = {1, 2, 4}, 5의 약수 = {1, 5} . 2는 가장 빈번한 약수입니다.

예 2

으아악 으아악

설명 - 2의 약수 = {1, 2}, 3의 약수 = {1, 3}, 4의 약수 = {1, 2, 4}, 5의 약수 = {1, 5} . 2는 가장 빈번한 약수입니다.

방법 1: 무차별 크래킹

이 문제를 해결하는 무차별적인 방법은 간격에 있는 모든 숫자의 모든 약수를 찾아 발생 횟수와 함께 맵에 저장하는 것입니다.

알고리즘

프로세스 제수(숫자)

  • For i = 1 to n1/2+1

  • 숫자%i == 0

  • 인 경우
  • 숫자/i == i

  • 인 경우
  • 지도에 i가 없으면 (i, 1)을 삽입하세요

  • 그렇지 않으면 지도[i]++

  • 기타

  • 지도에 i가 없으면 (i, 1)을 삽입하세요

  • 그렇지 않으면 지도[i]++

  • num/i가 맵에 없으면 (num/i, 1)을 삽입하세요

  • 다른 지도[num/i]++

maxDivisors(a, b) 처리

  • n=a에서 b까지

  • 제수(n)

  • map.erase(1)

  • divisor = 1, 개수 = int_min

  • 지도의 모든 요소에

  • if it.value > count

  • count = it.value

  • Divisor = it.key

예: C++ 구현

아래 프로그램에서는 divisors() 함수에서 각 숫자의 제수를 찾고, maxdivisor() 함수에서 가장 큰 발생 제수를 찾습니다.

으아악

출력

으아악

시간 복잡도 - O(n3/2), 간격의 각 숫자에 대해 제수를 찾기 위해 복잡도 O(n1/2)의 루프가 수행되기 때문입니다.

공간 복잡성 - O(n), 지도 공간.

방법 2

제수가 나올 때마다 지도를 채우는 시간을 줄임으로써 위의 방법을 더욱 최적화할 수 있습니다. 각 숫자의 약수를 찾는 대신 구간의 하한과 상한을 계산하여 구간에서 각 약수가 발생하는 것을 학습할 수 있습니다.

구간 [2, 5]를 예로 들어보겠습니다.

가능한 약수의 집합은 1부터 5까지입니다. 따라서 1 = 5/1 - 2/1 +1 = 4가 발생합니다. 2 = 5/2 - 2/2 + 1 = 2인 것으로 보입니다. 3 = 5/3 - 2/3 = 1인 것으로 보입니다. 4 = 5/4 - 2/4 = 1인 것으로 보입니다. 5 = 5/5 - 2/5 = 1인 것으로 보입니다.

위의 내용은 다음과 같이 공식화할 수 있습니다.

하한% 제수 == 0이면 occ = 상한/제수 - 하한/제수 + 1

기타 occ = 상한/제수 - 하한/제수

알고리즘

maxDivisor(a, b) 프로세스

  • for i = 2 to b

  • 만약 a%i == 0

  • 회수 = b/i - a/i +1

  • 기타

  • 회수 = b/i - a/i

  • map.insert(i, 시간)

  • divisor = 1, 개수 = int_min

  • 지도의 모든 요소에

  • if it.value > count

  • count = it.value

  • Divisor = it.key

예: C++ 구현

아래 프로그램에서는 숫자의 제수를 역순으로 찾는 대신 각 제수에 대해 간격에 몇 개의 배수가 있는지 찾습니다.

으아악

출력

으아악

방법 3

이 문제에 대한 매우 간단한 해결책이 아래에 나와 있습니다.

크기가 1보다 큰 간격에서는 숫자의 절반(모든 짝수)이 약수로 2를 갖게 됩니다.

그래서 다음과 같이 사용할 수 있습니다.

알고리즘

maxDivisors(a, b) 처리

  • 만약 a == b

  • ans =

  • 기타

  • ans = 2

예: C++ 구현

아래 프로그램에서는 모든 짝수가 약수로 2를 갖는다는 관찰을 구현합니다.

으아악

출력

으아악

결론

간단히 말하면, 간격에서 가장 큰 발생 약수를 찾기 위해 위의 방법을 사용할 수 있으며, 시간 범위는 O(n3/2)부터 O(1)까지이고 공간 범위는 O(n)까지입니다. O( 1).

위 내용은 간격의 최대 공약수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 함수 매크로 정의의 장점과 단점은 무엇입니까? C++ 함수 매크로 정의의 장점과 단점은 무엇입니까? Apr 11, 2024 pm 04:54 PM

함수 매크로 정의는 코드를 단순화하고 성능을 향상시킬 수 있지만 유형 불안정, 디버깅 어려움, 이름 충돌, 코드 중복 등의 단점도 있습니다. 장단점을 따져본 후에는 함수 매크로를 사용할 때 충분한 정보를 바탕으로 결정을 내리는 것이 중요합니다.

C 언어를 사용하여 최대 공약수를 찾는 방법에 대한 자세한 설명 C 언어를 사용하여 최대 공약수를 찾는 방법에 대한 자세한 설명 Feb 18, 2024 pm 11:10 PM

C 언어에서 최대공약수를 구하는 방법에 대한 자세한 설명 최대공약수(GCD, Greatest Common Divisor)는 수학에서 흔히 사용되는 개념으로, 여러 정수 중에서 가장 큰 약수를 가리킨다. C 언어에서는 최대 공약수를 찾기 위해 다양한 방법을 사용할 수 있습니다. 이 문서에서는 이러한 일반적인 방법 중 몇 가지를 자세히 설명하고 특정 코드 예제를 제공합니다. 방법 1: 유클리드 나눗셈은 두 숫자의 최대 공약수를 찾는 고전적인 방법입니다. 기본 아이디어는 두 숫자의 약수와 나머지를 연속적으로 나누는 것입니다.

C++ 함수 호출 메커니즘에 대한 자세한 설명 C++ 함수 호출 메커니즘에 대한 자세한 설명 Apr 11, 2024 pm 02:12 PM

C++의 함수 호출 메커니즘에는 함수에 인수를 전달하고 해당 코드를 실행하며 결과가 있는 경우 결과를 반환하는 작업이 포함됩니다. 매개변수를 전달하는 방법에는 두 가지가 있습니다. 값으로 전달(수정 사항은 함수 내부에서 수행됨)과 참조로 전달(수정 사항이 호출자에 반영됨)입니다. 값 전달 시 함수 내의 값 수정은 원래 값(예: printValue)에 영향을 주지 않는 반면, 참조 전달 시 수정은 원래 값(예: printReference)에 영향을 미칩니다.

C 언어에서 최대 공약수를 찾는 방법 C 언어에서 최대 공약수를 찾는 방법 Sep 27, 2023 am 09:41 AM

최대공약수는 C 언어의 유클리드 알고리즘을 사용하여 구할 수 있습니다. 원리는 다음과 같습니다. 두 정수 a와 b의 최대 공약수는 a를 b로 나눈 나머지와 c와 b의 최대 공약수와 같습니다. 이 알고리즘은 매우 효율적이며 큰 숫자를 처리할 때에도 빠르게 문제를 해결할 수 있습니다.

비트코인 레이어 1 프로토콜을 죽이는 3개국(BRC-20, Atomics, Runes)을 살펴봅니다. 비트코인 레이어 1 프로토콜을 죽이는 3개국(BRC-20, Atomics, Runes)을 살펴봅니다. Apr 23, 2024 pm 02:01 PM

원저자: 0xSea.eth 블록 높이 840,000에서 비트코인은 블록 보상이 6.25 BTC에서 3.125 BTC로 감소하면서 네 번째 반감기를 맞이하게 됩니다. 이는 전체 암호화 업계가 주목하는 주요 이벤트입니다. 비트코인 생태계 내에서 거의 모든 사람들이 840,000 블록 높이로 온라인에 진출할 Runes 프로토콜에 주목하고 있습니다. Runes 프로토콜은 비트코인 ​​레이어 프로토콜 생태계의 환경을 어떻게 변화시킬까요? BRC-20, Atomics 및 기타 프로토콜에 어떤 영향을 미치나요? 관찰자이자 플레이어로서 반감기 및 룬 출시를 앞두고 시장에 대한 최근 생각을 정리하고 싶습니다. 핵심 관점 1/비트코인의 1계층 토큰 프로토콜은 BRC-20, Atomi를 형성합니다.

C 언어 프로그래밍을 사용하여 최대 공약수 풀기 C 언어 프로그래밍을 사용하여 최대 공약수 풀기 Feb 21, 2024 pm 07:30 PM

제목: C 언어 프로그래밍을 사용하여 최대 공약수 솔루션 구현 최대 공약수(Greatest Common Divisor, 줄여서 GCD)는 두 개 이상의 정수를 동시에 나눌 수 있는 가장 큰 양의 정수를 말합니다. 최대 공약수를 구하는 것은 일부 알고리즘 및 문제 해결에 매우 도움이 될 수 있습니다. 본 글에서는 최대공약수를 찾는 기능을 C언어 프로그래밍을 통해 구현하고, 구체적인 코드 예시를 제공하겠습니다. C 언어에서는 유클리드 알고리즘을 사용하여 최대값을 풀 수 있습니다.

쌍을 해당 제품으로 대체하여 배열의 최대 공약수를 1보다 크게 만들 수 있는지 확인하십시오. 쌍을 해당 제품으로 대체하여 배열의 최대 공약수를 1보다 크게 만들 수 있는지 확인하십시오. Aug 31, 2023 pm 06:49 PM

이 기사에서는 C++를 중심으로 여러 프로그래밍 언어에서 배열의 최대 공약수(GCD)에 대한 흥미로운 질문을 탐구하는 것을 목표로 합니다. GCD를 1 이상으로 향상시킬 수 있는지 여부를 확인하기 위해 쌍별 요소 교환과 해당 곱의 수를 활용하는 알고리즘 접근 방식을 시연할 것입니다. 또한 이 문제를 해결하기 위한 다른 방법을 각각의 구문 정의와 함께 제공할 것입니다. 이러한 솔루션 외에도 이러한 메서드를 포함하는 두 개의 완전한 실행 코드도 제시합니다. 구문 다음 코드 예제를 명확하게 이해하려면 먼저 사용된 구문을 평가하고 이해해야 합니다. #include<iostream>#include<vecto

최대 공약수를 찾기 위해 C 언어로 작성된 함수를 설계합니다. 최대 공약수를 찾기 위해 C 언어로 작성된 함수를 설계합니다. Feb 19, 2024 pm 10:27 PM

C언어는 크로스 플랫폼, 높은 효율성, 유연성이라는 장점을 가지고 널리 사용되는 컴퓨터 프로그래밍 언어입니다. C 언어에서는 최대 공약수를 찾아야 하는 경우가 자주 발생하므로 C 언어를 사용하여 최대 공약수를 찾는 함수를 설계하는 것은 매우 실용적입니다. 이번 글에서는 C 언어에서 최대 공약수를 구하는 함수를 작성하는 방법을 자세히 소개하고, 구체적인 코드 예시를 제시하겠습니다. 먼저, 최대 공약수가 무엇을 의미하는지 이해해야 합니다. 최대 공약수라고도 알려진 최대 공약수는 두 개 이상의 정수에 공통인 최대 약수를 나타냅니다.

See all articles