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

연속된 숫자의 합으로 계승 n을 표현합니다.

WBOY
풀어 주다: 2023-09-07 14:29:02
앞으로
1400명이 탐색했습니다.

연속된 숫자의 합으로 계승 n을 표현합니다.

숫자의 계승을 연속된 숫자의 합으로 표현하는 방법을 알아보기 위해 두 가지 방법을 논의하겠습니다. 첫 번째 방법은 직접적이고 간단한 방법인 반면, 다른 방법에서는 산술 수열의 개념을 사용하여 점유되는 시간과 공간 측면에서 덜 복잡하게 만듭니다.

문제 설명

숫자가 주어지면 숫자의 계승을 연속된 자연수의 합으로 표현하는 방법을 찾아야 합니다.

여기에는 두 가지 다른 기능이 포함됩니다. -

  • 숫자의 계승을 찾아보세요.

  • 연속된 자연수의 합으로 숫자를 표현하는 방법의 수를 찾아보세요.

예 1

으아아아

우리 모두는 3의 계승값이 6이고 1+2+3으로 쓸 수 있다는 것을 알고 있으므로 답은 1방향입니다.

예 2

으아아아

우리 모두는 4의 계승값이 24이고 7+8+9로 쓸 수 있다는 것을 알고 있으므로 답은 1방향입니다.

방법 1

이것은 먼저 숫자의 계승을 구한 다음 연속된 자연수의 합으로 표현될 수 있는 방법의 수를 계산하는 간단한 방법입니다. 방법은 계승을 일련의 산술 길이 len+1로 -

로 표현하는 것입니다. 으아아아

len을 양의 정수로 얻으면 이를 해법으로 간주합니다.

아래 예에서는 숫자의 계승을 연속된 숫자의 합으로 표현하는 방법의 수를 찾으려고 합니다.

으아아아

출력

위의 C++ 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

으아아아

방법 2: 최적화 방법

위에서 본 접근 방식은 오버플로를 유발하는 더 나은 접근 방식입니다.

숫자 p부터 시작하는 len 연속 숫자의 합은 다음과 같이 쓸 수 있습니다.

으아아아

sum도 Number!와 같기 때문입니다.

글을 쓸 수 있어요

으아아아

여기에서는 모든 (len, p) 쌍을 계산하는 대신 모든 (len, (len + 2*p + 1)) 쌍을 계산합니다. 이는 AB=2*Number인 경우 모든 주문 pf(A, B)를 계산한다는 의미입니다! 그리고

이것은 우리가 2*숫자의 홀수 약수를 찾고 있다는 뜻입니다! 이것은 또한 Number의 홀수 제수이기도 합니다!

제수를 계산해보세요! , 인수분해에서 소수의 거듭제곱을 계산해야 하며, 제수의 수는 (f1 + 1)*(f2 + 1)* … *(fn + 1)입니다.

Legendre의 공식을 사용하여 숫자의 계승에서 소수의 최대 거듭제곱을 계산하겠습니다.

이 접근 방식의 코드는 다음과 같습니다.

으아아아

출력

위 C++ 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

으아아아

결론

이 글에서는 연속된 자연수의 합으로 숫자의 계승을 알아내는 두 가지 방법을 논의했습니다.

위 내용은 연속된 숫자의 합으로 계승 n을 표현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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