程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> NYOJ

NYOJ

編輯:關於C++

 

最強DE 戰斗力

時間限制:1000 ms | 內存限制:65535 KB 難度:3

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

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

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

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

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

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

情況

作戰安排

總的戰斗力

1

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

1*1*1*1*1=1

2

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

1*1*1*2=2

3

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

1*2*2=4

4

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

1*1*3=3

5

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

2*3=6

6

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

1*4=4

7

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

5=5

2
5
4
6
4

 

 

AC代碼:

 

#include 
#include 
#include 
using namespace std;

int ans[205];
int multiply(int x)
{
    for(int up=0, i=0; i<200; i++)
	{
        up = ans[i] * x + up;
        ans[i] = up % 10;
        up /= 10;
    }
}

int main()
{
    int N;
    scanf(%d, &N);
    while(N--)
	{
        memset(ans, 0, sizeof(ans)); ans[0]=1;
        int a;
        scanf(%d, &a);
        int n = a/3, i;
        if(a%3 == 1) n--;
        for(i=0; i=0;i--)
            if(ans[i]) break;
        for(; i>0; i--)
            printf(%d, ans[i]);
        printf(%d
, ans[0]);
    }
    return 0;
}


 

 

描述 顯然,將部隊分為2個作戰隊伍(一個為2,另一個為3),總的戰斗力達到最大!
輸入第一行: N表示有N組測試數據. (2<=N<=5)
接下來有N行,每行有一個整數Ti 代表趙國部隊的兵力. (1<=Ti<=1000) i=1,…N
輸出對於每一行測試數據,輸出占一行,僅一個整數S,表示作戰安排的最大戰斗力.
樣例輸入
樣例輸出
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved