343. Integer Break -- Avota

来源:http://www.cnblogs.com/avota/archive/2016/04/23/5424493.html
-Advertisement-
Play Games

問題描述: Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maxim ...


問題描述:

Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.

For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).

Note: you may assume that n is not less than 2.

解題思路:

給定一個正整數n(其實後來測試發現n到了59其結果就超出int的表示範圍了),將其拆解成至少兩個正整數的和,計算拆解數的乘積,找出所能獲得的最大乘積。這種輸入某個數求取某種最好解的題目最簡單有效的方法就是多列幾個例子看看是否有規律,對於這題我們先列出4到12的結果看看:

整數n 乘積最大對應的拆解(可能有多種) 最大乘積 模3
4 2 * 2 4 1
5 3 * 2 3*2 2
6 3 * 3 3^2 0
7 3 * 2 * 2 3*4 1
8 3 * 3 * 2 3^2*2 2
9 3 * 3 * 3 3^3 0
10 3 * 3 * 2 * 2 3^2*4 1
11 3 * 3 * 3 * 2 3^3*2 2
12 3 * 3 * 3 * 3 3^4 0

仔細觀察拆解結果與n模3對應關係,發現餘數為0時最大乘積為3的n/3次冪,餘數為1時最大乘積為4乘以3的(n/3-1)次冪,餘數為2時最大乘積為2乘以3的n/3次冪。

示例代碼:

class Solution {
public:
    int integerBreak(int n) {
        if(n == 2){
            return 1;
        }
        if(n == 3){
            return 2;
        }
        
        int k = n / 3;
        int yu = n - k * 3;
        int result = 0;
        
        if(yu == 1){
            result = 4 * pow(3, k-1);
        }
        else if(yu == 2){
            result = 2 * pow(3, k);
        }
        else{
            result = pow(3, k);
        }
        return result;
    }
};

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、匹配a標簽及其url: 說明:在上面的正則表達式中, 用來匹配href屬性前面和後面的各種屬性: 用來匹配href屬性引號中間的url: 用來匹配a標簽之間的內容: 2、匹配img標簽及其url: 3、匹配標簽及標簽中間的內容: 說明:當html字元串如下時,可以匹配到兩處, 如果正則表達式這樣 ...
  • 異常背景: 第一次開發 WPF 時,所有資源都定義在 App.xaml 文件中。隨著項目資源的增多,查看與修改資源時很麻煩,就在 App.xaml 以集成資源字典的方式。 異常原因: 在 App.xaml 中定義資源時,我把項目中需要使用的 Class 都寫在最上面 <Application.Res ...
  • html dom,文件夾名稱,文件名稱·······,都儘量不用ad,adv···,advertisement 這些關鍵詞! 為嘛呢? 因為會被瀏覽器的廣告插件自動給屏蔽掉。 我的網站中有一個廣告管理頁面: /advertisement/AdvertisingSpaces.aspx 用於管理網站的廣 ...
  • MailMessage mailMessage = new MailMessage();ArrayList attachsendObject = new ArrayList();string mailServer = "internalmail.morningstar.com"; mailMessa ...
  • 在開發一個串口通信程式時,用到需要將10進位轉換為16進位的情況,參照瞭如下類容: From:http://www.cnblogs.com/xdotnet/archive/2009/01/17/tostring_format.html 在很多對象顯示為字元串的時候都會使用到ToString中的格式化 ...
  • 註:以下文章原文來自於Dr Charles Severance 的 《Python for Informatics》 12.3 用HTTP協議獲取一張圖片 在上一節的例子中,我們獲取的是一個有換行符的文本文件,並簡單的把它顯示在屏幕上。同樣我們可以用一個小程式通過HTTP協議獲取圖片。下麵這個程式運 ...
  • 這篇文章是我在慕課網上學習Hibernate註解的時候進行手機以及整理的筆記。 今天把它分享給大家,希望對大家有用。可以進行收藏,然後需要的時候進行對照一下即可。這樣能起到一個查閱的作用。 本文主要講解的內容簡介 : 第1章 類級別註解 1-1 本章簡介 1-2 準備工作 1-3 @Entity註解 ...
  • #include<stdio.h>int main(){ int i,j; int word=0,num=0;//新單詞標記,單詞下標 char str[100],s[50][20]={0},c; gets(str);//輸入字元串(多個單詞) for(i=0;(c=str[i])!='\0';i+ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...