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

숫자 n을 1로 변경하는 데 필요한 최소 연산 수를 계산하는 C++ 프로그램

WBOY
풀어 주다: 2023-09-14 22:53:12
앞으로
940명이 탐색했습니다.

숫자 n을 1로 변경하는 데 필요한 최소 연산 수를 계산하는 C++ 프로그램

숫자 n이 있다고 가정해보세요. 다음 연산 중 하나를 임의로 수행합니다.

  • n이 2로 나누어지면 n을 n/2로 대체합니다.

  • n이 3으로 나누어지면 n을 2n/3으로 대체합니다.

  • n이 나누어지면 5로 n을 4n/5로 바꾸세요

    li>

숫자 1에 필요한 최소 이동 횟수를 계산해야 합니다. 가능하지 않으면 -1이 반환됩니다.

입력이 n = 10과 같은 경우 n/2를 사용하면 5가 되고, 4n/5를 사용하면 4가 되고, n/2는 다시 2가 되고, n/2는 다시 1이 되기 때문에 출력은 4가 됩니다.

Steps

Steps h2>

이 문제를 해결하기 위해 다음 단계를 따릅니다. -

m := 0
while n is not equal to 1, do:
   if n mod 2 is same as 0, then:
      n := n / 2
      (increase m by 1)
   otherwise when n mod 3 is same as 0, then:
      n := n / 3
      m := m + 2
   otherwise when n mod 5 is same as 0, then:
      n := n / 5
      m := m + 3
   Otherwise
      m := -1
      Come out from the loop
return m
로그인 후 복사

Example

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. -

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int m = 0;
   while (n != 1) {
      if (n % 2 == 0) {
         n = n / 2;
         m++;
      }
      else if (n % 3 == 0) {
         n = n / 3;
         m += 2;
      }
      else if (n % 5 == 0) {
         n = n / 5;
         m += 3;
      }
      else {
         m = -1;
         break;
      }
   }

   return m;
}
int main() {
   int n = 10;
   cout << solve(n) << endl;
}
로그인 후 복사

Input

10
로그인 후 복사

Output

4
로그인 후 복사

위 내용은 숫자 n을 1로 변경하는 데 필요한 최소 연산 수를 계산하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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