首頁 > 後端開發 > C++ > C++程式用來計算使數字n變成1所需的最小操作次數

C++程式用來計算使數字n變成1所需的最小操作次數

WBOY
發布: 2023-09-14 22:53:12
轉載
968 人瀏覽過

C++程式用來計算使數字n變成1所需的最小操作次數

假設我們有一個數字n。我們任意執行這些操作之一-

  • 當n 可被2 整除時,將n 替換為n/2

  • 當n 可被3 整除時,將n 替換為2n/3

  • 當n 可被5 整除時,將n 替換為4n/5

    ## li>
我們必須計算數字1 所需的最小移動次數。如果不可能,則回傳 -1。

因此,如果輸入類似於n = 10,則輸出將為4,因為使用n/2 得到5,然後使用4n/5 得到4,然後再次n/2 得到2,再次n/2得到1。

步驟

步驟

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
登入後複製

範例

讓我們看看以下實現,以便更好地理解-

#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;
}
登入後複製

輸入

10
登入後複製

輸出

4
登入後複製

以上是C++程式用來計算使數字n變成1所需的最小操作次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板