日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ541 最强DE 战斗力(第五届省赛试题)

發布時間:2024/8/24 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ541 最强DE 战斗力(第五届省赛试题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最強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個作戰隊伍(一個為2,另一個為3),總的戰斗力達到最大! 輸入
第一行: N表示有N組測試數據. (2<=N<=5)
接下來有N行,每行有一個整數Ti 代表趙國部隊的兵力. (1<=Ti<=1000) i=1,…N
輸出
對于每一行測試數據,輸出占一行,僅一個整數S,表示作戰安排的最大戰斗力.
樣例輸入
254
樣例輸出
64
算法分析:

找到規律,保證取3最多,若%3余1則去一個3取4,余2則直接取的d[2].以基礎的d[1]=1,d[2]=2,d[3]=3,d[4]=4為基礎遞推求解。之后,注意用大數保存結果,測試了下_int64最多存到119。

代碼:

#include<cstdio> #include<iostream> #include<string> #include<algorithm> using namespace std; string Multiply(string s,int x) //大數乘以整形數 {reverse(s.begin(),s.end());int cmp=0;for(int i=0;i<s.size();i++){cmp=(s[i]-'0')*x+cmp;s[i]=(cmp%10+'0');cmp/=10;}while(cmp){s+=(cmp%10+'0');cmp/=10;}reverse(s.begin(),s.end());return s; } int main() {string s[1005];s[1]="1",s[2]="2",s[3]="3",s[4]="4";for(int i=5;i<1005;i++){s[i]=Multiply(s[i-3],3);}int n,m;scanf("%d",&n);while(n--){scanf("%d",&m);cout<<s[m]<<"\n";}return 0; }

轉載于:https://www.cnblogs.com/walkthehorizon/p/4388157.html

總結

以上是生活随笔為你收集整理的NYOJ541 最强DE 战斗力(第五届省赛试题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。