> 백엔드 개발 > C++ > 본문

p보다 큰 가장 작은 삼각수

王林
풀어 주다: 2023-09-20 19:13:02
앞으로
1249명이 탐색했습니다.

p보다 큰 가장 작은 삼각수

삼각형 수와 주어진 숫자 "num"보다 큰 가장 작은 삼각형 수를 찾는 방법에 대해 논의하겠습니다. 먼저 삼각수가 무엇인지 논의한 다음 "num"보다 큰 가장 작은 삼각수를 찾아보겠습니다

같은 문제에 대해 두 가지 다른 접근 방식을 살펴보겠습니다. 첫 번째 방법에서는 간단한 루프를 실행하여 출력을 생성하고, 두 번째 방법에서는 먼저 필요한 수를 계산하기 위한 일반 공식을 생성한 다음 해당 공식을 직접 적용하여 최소 삼각형 수를 얻습니다. p>

문제 설명

"num"보다 큰 최소 개수의 삼각형을 찾아야 합니다.

공이 담긴 상자가 여러 개 있습니다. 상자에 들어 있는 공의 개수는 모든 상자에 대해 서로 다른 삼각형 숫자입니다. 상자에는 1부터 n까지 번호가 매겨져 있습니다. 상자에서 "num"개의 공을 제거한 후 어떤 상자에 최소 개수의 공이 들어 있는지 알아내야 합니다.

예를 통해 이해해 봅시다

으아악

공 5개를 꺼낸 후 공이 가장 적은 상자가 무엇인지 알아내야 합니다

으아악

이 예에 대한 솔루션 -

으아악

삼각수란 무엇인가요?

삼각형 숫자는 정삼각형 격자 형태로 표현할 수 있는 숫자입니다. 행의 포인트 수는 항상 행 번호와 같습니다. 즉, 첫 번째 행에는 1개의 포인트가 포함되고 두 번째 행에는 2개의 포인트가 포함되는 식입니다. 여러 개의 삼각형 숫자는 1, 3, 6, 10, 15… 이제 n번째 삼각수 공식을 유도해 보겠습니다.

삼각형 숫자의 n번째 행에는 n개의 점이 포함되어 있으므로 삼각형 숫자는 각 행에 있는 점의 합으로 표현될 수 있습니다. 또한 n번째 삼각수는 n개의 행을 가지고 있으므로 n번째 삼각수는 처음 n개의 자연수의 합으로 주어질 수 있다는 것을 알고 있습니다.

방법 1: (직접 방법)

이 방법에서는 루프를 실행하고 주어진 숫자와 n번째 삼각함수 사이의 차이를 계산합니다. 차이가 0보다 크면 필요한 상자 번호를 얻으므로 루프를 자릅니다.

삼각수에 대해서는 기존의 (n-1)번째 삼각수에 계속해서 n을 더해 다음 삼각수 값을 계산해보겠습니다.

알고리즘

  • 1단계 - 변수 triangular_number를 0으로 초기화합니다.

  • 2단계 - for 루프를 실행하고 각 반복마다 n을 계속 추가합니다.

  • 3단계 - 계속해서 삼각형 숫자와 주어진 숫자 "num" 사이의 차이를 계산합니다.

  • 4단계 - 차이 >=0을 얻으면 원하는 상자 번호로 n을 인쇄합니다.

C++에서 이 메서드를 구현하는 방법은 다음과 같습니다. -

으아악

출력

으아악

방법 2: 수식 기반 방법

이 방법에서는 먼저 필요한 수를 계산하기 위한 일반 공식을 생성한 다음 공식을 직접 적용하여 주어진 수보다 큰 가장 작은 수의 삼각형을 얻습니다.

n번째 상자 번호의 삼각수는 -

로 표시됩니다. 으아악

삼각형의 개수 >= num이 되도록 가장 작은 상자 번호 "n"을 구하세요.

으아악

이것은 우리가 해결해야 한다는 것을 의미합니다 -

으아악

이 방정식을 사용하면 다음을 얻습니다.

으아악

이 방법에 대한 코드는 다음과 같습니다. -

으아악

출력

으아악

이 방법의 시간 복잡도 - O(logn)

Space Complexity - 지속적인 추가 공간만 사용하므로 O(1)입니다.

이 기사에서는 주어진 숫자 "num"보다 큰 가장 작은 수의 삼각형을 찾는 두 가지 방법에 대해 논의했습니다. 첫 번째 방법은 루프를 실행하고 각 반복마다 n을 추가하여 삼각법 수를 계산합니다. 또한 주어진 숫자와 삼각함수의 차이를 계산했습니다. 두 번째 접근 방식에서는 원하는 출력을 계산하기 위한 수학 공식을 생성합니다.

위 내용은 p보다 큰 가장 작은 삼각수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!