最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2023-06-24:給你一根長度為 n 的繩子, 請把繩子剪成整數(shù)長度的 m 段, m、n都是整數(shù)

2023-06-24 15:34 作者:福大大架構(gòu)師每日一題  | 我要投稿

2023-06-24:給你一根長度為 n 的繩子,

請把繩子剪成整數(shù)長度的 m 段,

m、n都是整數(shù),n > 1并且m > 1,

每段繩子的長度記為 k[0],k[1]...k[m - 1]。

請問 k[0]k[1]...*k[m - 1] 可能的最大乘積是多少?

例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。

答案需要取模1000000007。

輸入: 10。

輸出: 36。

答案2023-06-24:

具體步驟如下:

1.如果n <= 3,返回n-1。

2.如果n > 3,計算剩下繩子長度為n - 4,此時剩下的長度為4。

3.如果剩下的長度為0,即n為3的倍數(shù),最后一段長度為1;如果剩下的長度為2,最后一段長度為2;如果剩下的長度為4,最后一段長度為4。

4.計算3的個數(shù),即rest = n - (剩下的長度);計算最后一段的長度last。

5.利用快速冪算法計算3的rest/3次方取mod后的結(jié)果,記為power(3, rest/3)。

6.返回(power(3, rest/3) * last) % mod作為最大乘積的結(jié)果。

例如,當n為10,按照上述步驟計算:

1.n > 3且不是3的倍數(shù),剩下的長度為2,最后一段長度為2。

2.計算3的個數(shù),rest = n - 2 = 8。

3.計算power(3, rest/3) = power(3, 8/3)。

4.返回(power(3, 8/3) * 2) % mod,計算結(jié)果為36,即最大乘積。

因此,輸入為10,輸出為36。

該代碼的時間復雜度為O(log(n)),空間復雜度為O(1)。

在函數(shù)power中,通過快速冪算法計算x的n次方,時間復雜度為O(log(n))。在函數(shù)cuttingRope中,沒有使用任何循環(huán)或遞歸,只有一些簡單的判斷和計算操作,因此時間復雜度為O(1)。

對于空間復雜度,代碼只使用了常數(shù)級別的額外空間來存儲變量,因此空間復雜度為O(1)。不隨輸入規(guī)模的增加而增加。

go完整代碼如下:

package?main

import?"fmt"

const?mod?=?1000000007

//?power計算x的n次方,取mod后的結(jié)果
func?power(x?int,?n?int)?int?{
????ans?:=?int64(1)
????x64?:=?int64(x)
????n64?:=?int64(n)

????for?n64?>?0?{
????????if?n64&1?==?1?{
????????????ans?=?(ans?*?x64)?%?mod
????????}
????????x64?=?(x64?*?x64)?%?mod
????????n64?>>=?1
????}

????return?int(ans)
}

//?cuttingRope根據(jù)觀察得到的規(guī)律計算繩子的最大乘積
func?cuttingRope(n?int)?int?{
????if?n?==?2?{
????????return?1
????}
????if?n?==?3?{
????????return?2
????}

????rest?:=?0
????last?:=?0

????if?n%3?==?0?{
????????rest?=?n
????????last?=?1
????}?else?if?n%3?==?1?{
????????rest?=?n?-?4
????????last?=?4
????}?else?{
????????rest?=?n?-?2
????????last?=?2
????}

????return?(power(3,?rest/3)?*?last)?%?mod
}

func?main()?{
????n?:=?10
????result?:=?cuttingRope(n)
????fmt.Println("Result:",?result)
}

在這里插入圖片描述

rust完整代碼如下:

const?MOD:?i32?=?1_000_000_007;

fn?power(x:?i32,?n:?i32)?->?i32?{
????let?mut?ans:?i64?=?1;
????let?mut?x:?i64?=?x?as?i64;
????let?mut?n:?i64?=?n?as?i64;

????while?n?>?0?{
????????if?n?&?1?==?1?{
????????????ans?=?(ans?*?x)?%?MOD?as?i64;
????????}
????????x?=?(x?*?x)?%?MOD?as?i64;
????????n?>>=?1;
????}

????ans?as?i32
}

fn?cutting_rope(n:?i32)?->?i32?{
????if?n?==?2?{
????????return?1;
????}
????if?n?==?3?{
????????return?2;
????}

????let?rest?=?if?n?%?3?==?0?{?n?}?else?if?n?%?3?==?1?{?n?-?4?}?else?{?n?-?2?};
????let?last?=?if?n?%?3?==?0?{?1?}?else?if?n?%?3?==?1?{?4?}?else?{?2?};

????((power(3,?rest?/?3)?as?i64?*?last?as?i64)?%?MOD?as?i64)?as?i32
}

fn?main()?{
????let?n?=?10;
????let?result?=?cutting_rope(n);
????println!("Result:?{}",?result);
}

在這里插入圖片描述

c++代碼如下:

#include?<iostream>
using?namespace?std;

const?int?mod?=?1000000007;

//?power計算x的n次方,取mod后的結(jié)果
long?long?power(long?long?x,?int?n)?{
????long?long?ans?=?1;
????while?(n?>?0)?{
????????if?((n?&?1)?==?1)?{
????????????ans?=?(ans?*?x)?%?mod;
????????}
????????x?=?(x?*?x)?%?mod;
????????n?>>=?1;
????}
????return?ans;
}

//?cuttingRope根據(jù)觀察得到的規(guī)律計算繩子的最大乘積
int?cuttingRope(int?n)?{
????if?(n?==?2)?{
????????return?1;
????}
????if?(n?==?3)?{
????????return?2;
????}

????int?rest?=?0,?last?=?0;

????if?(n?%?3?==?0)?{
????????rest?=?n;
????????last?=?1;
????}
????else?if?(n?%?3?==?1)?{
????????rest?=?n?-?4;
????????last?=?4;
????}
????else?{
????????rest?=?n?-?2;
????????last?=?2;
????}

????return?(int)((power(3,?rest?/?3)?*?last)?%?mod);
}

int?main()?{
????int?n?=?10;
????int?result?=?cuttingRope(n);
????cout?<<?"Result:?"?<<?result?<<?endl;
????return?0;
}

在這里插入圖片描述

c完整代碼如下:

#include?<stdio.h>

const?int?mod?=?1000000007;

//?power計算x的n次方,取mod后的結(jié)果
long?long?power(long?long?x,?int?n)?{
????long?long?ans?=?1;
????while?(n?>?0)?{
????????if?((n?&?1)?==?1)?{
????????????ans?=?(ans?*?x)?%?mod;
????????}
????????x?=?(x?*?x)?%?mod;
????????n?>>=?1;
????}
????return?ans;
}

//?cuttingRope根據(jù)觀察得到的規(guī)律計算繩子的最大乘積
int?cuttingRope(int?n)?{
????if?(n?==?2)?{
????????return?1;
????}
????if?(n?==?3)?{
????????return?2;
????}

????int?rest?=?0,?last?=?0;

????if?(n?%?3?==?0)?{
????????rest?=?n;
????????last?=?1;
????}
????else?if?(n?%?3?==?1)?{
????????rest?=?n?-?4;
????????last?=?4;
????}
????else?{
????????rest?=?n?-?2;
????????last?=?2;
????}

????return?(int)((power(3,?rest?/?3)?*?last)?%?mod);
}

int?main()?{
????int?n?=?10;
????int?result?=?cuttingRope(n);
????printf("Result:?%d\n",?result);
????return?0;
}

在這里插入圖片描述


2023-06-24:給你一根長度為 n 的繩子, 請把繩子剪成整數(shù)長度的 m 段, m、n都是整數(shù)的評論 (共 條)

分享到微博請遵守國家法律
通化县| 长兴县| 广州市| 武川县| 东辽县| 上饶县| 固阳县| 西乡县| 桂阳县| 沂南县| 三原县| 洪泽县| 北票市| 建阳市| 长宁区| 海林市| 扎赉特旗| 汾阳市| 河间市| 襄汾县| 洛隆县| 大城县| 昌吉市| 元谋县| 安国市| 江孜县| 嘉峪关市| 根河市| 合作市| 灵宝市| 汝城县| 花垣县| 泾源县| 常宁市| 汝阳县| 山东省| 志丹县| 汉源县| 淮滨县| 谢通门县| 永德县|