目錄
使用的方法
#簡單的方法:數字右旋
演算法
範例
輸出
高效方法:乘以X
結論
首頁 後端開發 C++ 將1轉換為N的最小成本,可以透過乘以X或數字的右旋轉來實現

將1轉換為N的最小成本,可以透過乘以X或數字的右旋轉來實現

Sep 12, 2023 pm 08:09 PM
旋轉 成本 轉換

將1轉換為N的最小成本,可以透過乘以X或數字的右旋轉來實現

我們可以使用以下技術來找到乘以 X 或將其數字從 1 右旋轉到 N 的最便宜方法。若要監控初始最低成本,請建立一個成本變數。當從 N 到 1 時,檢查每個階段 N 是否被 X 整除。如果是,則將 N 除以 X 來更新它並繼續該過程。如果 N 無法被 X 整除,則將 N 的數字向右循環以增加其值。在這種情況下增加成本變數。最終的成本變數值將是將 1 變為 N 所需的最少數量。該演算法有效地確定使用數位旋轉或乘法進行所需轉換所需的最少操作。

使用的方法

  • Naive Approach: 數字的右旋轉

  • #高效方法:乘以 X

#簡單的方法:數字右旋

天真的方法是從數字1開始,反覆將其數字向右旋轉,直到達到目標數字N。在每次旋轉中,最後一位數字變為第一位數字。雖然概念上簡單,但對於較大的N值來說,這種策略可能效率低下,可能需要許多步驟才能達到目標數字。隨著N的增加,旋轉次數也迅速增加,使其成為確定將1轉換為N的最小成本的方法效果較差。由於其低效性,不建議在大N值的情況下使用這種方法,而其他方法,如將N除以X,被證明在找到轉換的最低成本方面更有效。

演算法

  • 建立變數「cost」來追蹤到達 N 所需的步驟,並將其初始化為 1 以表示目前值。

  • 依照這些指示重複操作,直到目前數字等於N:

    將目前數字的數字向右旋轉,使最後一位數字成為第一位數字。

    透過增加「cost」變數1來記錄所需旋轉的次數。

  • 一旦當前數字等於 N,「cost」變數將儲存使用右旋轉將原始整數 (1) 旋轉到 N 所需的最少步驟。

範例

#include <iostream>
#include <cmath>

int rotateDigits(int num, int numDigits) {
    return (num / 10) + (num % 10) * std::pow(10, numDigits - 1);
}

int main() {
    int N = 123; // Replace this with your desired N value

    int current = 1;
    int cost = 0;
    bool found = false;

    while (current != N) {
        int numDigits = std::to_string(current).length();
        current = rotateDigits(current, numDigits);
        cost++;

        if (cost > N) {
            std::cout << "N cannot be reached from 1 using right rotations." << std::endl;
            found = true;
            break;
        }
    }

    if (!found) {
        std::cout << "Minimum steps to reach N: " << cost << std::endl;
    }
    return 0;
}
登入後複製

輸出

N cannot be reached from 1 using right rotations.
登入後複製

高效方法:乘以X

將1乘以N的成本最小化的最佳方法是將N週期性地除以X,直到結果為1。為了實現這一點,初始化一個成本變數來監視最低成本。我們從N的值開始確定N是否可以被X整除。如果N和X都可以整除,成本增加並進行除法運算。重複這個過程,直到N等於1。這種方法比「數字右旋轉」更有效率,因為它需要更少的步驟才能得到結果1。由於其更快和更有效的特性,它是確定最低轉換成本的首選方法。

演算法

  • 要追蹤最低成本,請將變數「cost」初始化為 0。

  • 從給定的目標數N開始,使用固定的乘數X。

  • 只要N大於1,重複步驟4到6。

  • 假設N% X == 0,判斷N是否能被X整除。

  • 如果 N 可整除(N = N / X),則將 N 除以 X,然後在「cost」變數中加 1。

  • 如果不可整除,則將 N 的數字向右循環(透過將最後一位數字移至第一位)並將「成本」增加 1。

  • 在N變成1之前,重複步驟3到6。

  • 最後一個"cost"表示乘以X或將數字右移以將1變為N所需的最低要求。

範例

#include <iostream>
#include <cmath>

int main() {
    int X = 3;
    int N = 100;
    int cost = 0;

    while (N > 1) {
        if (N % X == 0) {
            N /= X;
            cost++;
        } else {
            int lastDigit = N % 10;
            N = (N / 10) + (lastDigit * std::pow(10, std::floor(std::log10(N))));
            cost++;
        }
    }

    std::cout << "Final cost: " << cost << std::endl;

    return 0;
}
登入後複製

輸出

Final cost: 2
登入後複製

結論

總而言之,在確定透過乘以 X 或右旋轉數字來將 1 轉換為 N 的最低成本時,乘以 X 的有效方法超越了數字右旋轉的樸素方法。高效方法提供的更簡化的方法需要更少的步驟來達到所需的 N 數。另一方面,樸​​素方法可能無效且耗時,特別是對於較高的 N 值。我們可以減少所需的流程,並使用高效方法來確定將 1 轉化為 N 的最經濟方法。該策略解決了確定該轉換過程的最低成本的問題,並被證明是一種更有用和有效的演算法。

以上是將1轉換為N的最小成本,可以透過乘以X或數字的右旋轉來實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

USDT ERC20轉換為TRC20的簡易指南 USDT ERC20轉換為TRC20的簡易指南 Jan 18, 2024 pm 06:09 PM

我們逐步教您如何將USDTERC20轉換為TRC20網路。這是因為許多人喜歡將USDT穩定幣從以太坊網路轉移到Tron網絡,以節省交易費用。因此,如果您想將您的ERC-20代幣轉換為TRC-20,相信本教學會對您有所幫助。 ERC-20和TRC-20的區別ERC-20代幣和TRC-20代幣分別代表基於以太坊網路和Tron網路的代幣。這兩個網路之間存在一些差異,主要表現在以下方面:首先,以太坊網路常常面臨擁塞和高昂的汽油費問題,這可能導致交易延遲和高昂的交易成本。相較之下,Tron網路則相對壅塞較少

全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

如何將AI檔案轉換為CDR格式 如何將AI檔案轉換為CDR格式 Feb 19, 2024 pm 04:09 PM

AI檔案指的是AdobeIllustrator(簡稱AI)軟體所建立的向量圖形文件,而CDR檔案指的是CorelDRAW軟體所建立的向量圖形檔。由於這兩個軟體屬於不同的廠商開發,因此它們的文件格式不同,無法直接相互轉換。然而,我們可以透過一些方法將AI檔案轉換為CDR檔案。以下將介紹一種常用的轉換方法。步驟一:匯出AI檔案為EPS格式AdobeIllust

如何在Windows 11/10中將ODT轉換為Word? 如何在Windows 11/10中將ODT轉換為Word? Feb 20, 2024 pm 12:21 PM

在這篇文章中,我們將向您展示如何將OpenDocumentTextDocument(ODT)檔案轉換為MicrosoftWord(Docx、DOC等)。格式。如何在Windows11/10中將ODT轉換為Word以下是您可以在WindowsPC上將ODT文件轉換為DOC或DOCX格式的方法:使用寫字板或Word將ODT轉換為Word我們要向您展示的第一種方法是使用寫字板或MicrosoftWord將ODT轉換為Word。以下是實現這一點的步驟:首先,使用「開始」功能表開啟寫字板應用程式。現在,轉到

如何將虛擬機器轉換為實體機器? 如何將虛擬機器轉換為實體機器? Feb 19, 2024 am 11:40 AM

將虛擬機器(VM)轉換為實體機器是一種將虛擬實例和關聯的應用軟體遷移到實體硬體平台的過程。這種轉換有助於優化作業系統的效能和硬體資源利用。本文旨在深入探討如何進行這種轉換。如何實現從虛擬機器到實體機器的遷移?通常,虛擬機器與實體機之間的轉換過程由第三方軟體在虛擬機器外部執行。這個過程包括多個階段,涉及虛擬機器的配置和資源轉移。準備實體機器:第一步是確保實體機符合Windows的硬體需求。我們需要在實體機上備份數據,因為轉換過程將覆蓋現有數據。 *管理員帳戶的使用者名稱和密碼,具有建立系統映像的管理員權限。將虛擬

Golang時間處理:如何在Golang中將時間戳轉換為字串 Golang時間處理:如何在Golang中將時間戳轉換為字串 Feb 24, 2024 pm 10:42 PM

Golang時間轉換:如何將時間戳轉換為字串在Golang中,時間操作是非常常見的操作之一。有時候我們需要將時間戳記轉換為字串,以便於展示或儲存。本文將介紹如何使用Golang將時間戳轉換為字串,並提供具體的程式碼範例。 1.時間戳和字串的轉換在Golang中,時間戳通常是以整數數字的形式表示的,表示的是從1970年1月1日至當前時間的秒數。而字串則

PHP 月份轉換為英文月份的實作方法詳解 PHP 月份轉換為英文月份的實作方法詳解 Mar 21, 2024 pm 06:45 PM

這篇文章將詳細介紹如何將PHP中的月份轉換為英文月份的方法,同時給出具體的程式碼範例。在PHP開發中,有時候我們需要將數字表示的月份轉換為英文的月份,這在一些日期處理或資料展示的場景下非常實用。以下將從實作原理、具體程式碼範例和注意事項等方面進行詳解。一、實作原理在PHP中,可以透過使用DateTime類別和format方法來實現將數位月份轉換為英文月份。 Date

qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 Mar 21, 2024 pm 01:21 PM

qq音樂讓大家盡情享受觀影解悶,每天都可以使用這個軟體,輕鬆滿足自己的使用,優質海量的歌曲,任由大家暢聽,也可以下載保存起來,下次聽的時候,不需要網絡,而在這裡下載的歌曲不是MP3格式的,無法在其他平台使用,會員歌曲過期後也沒有辦法再聽了,所以很多小伙伴們,都想要將歌曲轉換成MP3格式的,在這裡小編為你們提供方法,幫助大家都可以使用起來!  1、開啟電腦qq音樂,點選右上角【主選單】按鈕,點選【音訊轉碼】,選擇【新增歌曲】選項,新增需要轉換的歌曲;  2、新增歌曲完畢,點選選擇轉換為【mp3

See all articles