nyoj 最強DE 戰鬥力 (數論入門)

2021-07-01 21:11:22 字數 2290 閱讀 4730

時間限制:

1000 ms  |  記憶體限制:

65535 kb

描述 春秋戰國時期,趙國地大物博,資源非常豐富,人民安居樂業。但許多國家對它虎視眈眈,準備聯合起來對趙國發起一場戰爭。

顯然,面對多個國家的部隊去作戰,趙國的兵力明顯處於劣勢。戰鬥力是決定戰爭成敗的關鍵因素,一般來說,一支部隊的戰鬥力與部隊的兵力成正比。但當把一支部隊分成若干個作戰隊伍時,這個部隊的戰鬥力就會大大的增強。

一支部隊的戰鬥力是可以通過以下兩個規則計算出來的:

1.若一支作戰隊伍的兵力為n,則這支作戰隊伍的戰鬥力為n;

2.若將一支部隊分為若干個作戰隊伍,則這支部隊的總戰鬥力為這些作戰隊伍戰鬥力的乘積。

比如:一支部隊的兵力為5時的戰鬥力分析如下:

情況作戰安排

總的戰鬥力

1,1,1,1,1(共分為5個作戰隊伍)

1*1*1*1*1=1

1,1,1,2   (共分為4個作戰隊伍)

1*1*1*2=2

1,2,2     (共分為3個作戰隊伍)

1*2*2=4

1,1,3     (共分為3個作戰隊伍)

1*1*3=3

2,3(共分為2個作戰隊伍)

2*3=6

1,4        (共分為2個作戰隊伍)

1*4=4

5           (共分為1個作戰隊伍)

5=5     顯然,將部隊分為2個作戰隊伍(乙個為2,另乙個為3),總的戰鬥力達到最大!

輸入第一行: n表示有n組測試資料. (2<=n<=5)

接下來有n行,每行有乙個整數ti 代表趙國部隊的兵力. (1<=ti<=1000) i=1,…n

輸出對於每一行測試資料,輸出佔一行,僅乙個整數s,表示作戰安排的最大戰鬥力.

樣例輸入

254
樣例輸出

64
**

第五屆河南省程式設計大賽

上傳者

acm_李如兵

題目:給你乙個數n 讓你將它分為 1~n 個部分 其中求最大值

思路:我是找規律找出來的

1~4 最大分法所得的值 就是自己本身

數   得分

5  2*3

6      3*3

7      2*2*3

8    2*3*3

9  3*3*3

10   1*3*3*3

.....

不難發現最優的解法 就趨向 3與2的乘積

理論證明:

依題意:

a1+ a2 + a3 + a4 + … + an = m

我們要求的:

y =  a1 * a2 *a3 * a4 * … * an

由對稱式的原理可得

當:a1 = a2 = a3= a4 = … = an 時y最大

n*a = m    ①

an = y       ②

由①②可得 a(m/a)

轉化為求 f( a ) =a(m/a) 的最大值,直接給出函式的影象和它的結論:

當a為3 的時候函式可以取到最大值

#includeusing namespace std;

int a[1005];

int t;

void mul(int n)

}int main()

a[0]=1;

while(n>4||n-3==0)

while(n>=2)

int i;

for(i = 999;!a[i]; i--) ;

// printf("%d",i);

for(int k=i; k>=0; k--)

printf("%d",a[k]);

printf("\n");}}

nyoj 541 最強DE 戰鬥力(數論)

最強de 戰鬥力 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 春秋戰國時期,趙國地大物博,資源非常豐富,人民安居樂業。但許多國家對它虎視眈眈,準備聯合起來對趙國發起一場戰爭。顯然,面對多個國家的部隊去作戰,趙國的兵力明顯處於劣勢。戰鬥力是決定戰爭成敗的關鍵因素,一般來說,...

最強DE 戰鬥力

t7最強de 戰鬥力 時間限制 1000 ms 記憶體限制 65535kb 問題描述 春秋戰國時期,趙國地大物博,資源非常豐富,人民安居樂業。但許多國家對它虎視眈眈,準備聯合起來對趙國發起一場戰爭。顯然,面對多個國家的部隊去作戰,趙國的兵力明顯處於劣勢。戰鬥力是決定戰爭成敗的關鍵因素,一般來說,一支...

nyoj541最強DE戰鬥力

nyoj541 1.數字二和三能組成任何數,因此乙個數的最大值的乘積 為2 m 3 n 2.然而3 n 2 n 能用3就不用2 3 1 2 n 1次時 但同時要考慮乙個問題 什麼時候用2 不用 3,其實就是 一種情況 除3的時候有餘數1就浪費了 1 x,不如 給2 就像4 這樣 4 3 1 1 3 ...