早教吧 育儿知识 作业答案 考试题库 百科 知识分享

Pascal问题,请大神解决!题目描述1.Zx很喜欢打篮球,于是wf向他发出挑战,但是wf技不如人,于是定了一个奇怪的规则:有n个篮框,每个篮框上有一个显示屏,上面有一个数字ai,一开始ai

题目详情
Pascal问题,请大神解决!
题目描述 1.Zx很喜欢打篮球,于是wf向他发出挑战,但是wf技不如人,于是定了一个奇怪的规则:有n个篮框,每个篮框上有一个显示屏,上面有一个数字ai,一开始ai都等于1,有m个球,每个球上都有一个整数bi(bi>=0),当第i个球投进第j个框时,这个篮筐上显示的数字就由ai变为ai×bi(框的数字×球的数字)。最后总分就等于所有篮筐数字的和。规定每一个篮筐都要被球投中至少一次,每一个球只能用一次,zx投球百发百中,但是wf定了这个规矩,使得zx束手无策了,现在zx想请你帮个忙,编一个程序帮他算出怎样投能拿到的总分最大 Zx说:“我可是和wf赌了一顿饭啊!” 输入  第一行是n和m   第二行有m个数,分别为每个球上的分数输出 Zx能拿到的最大分数,若无法按规矩完成任务,则输出-1 样例输入 Copy 3 5 1 2 3 4 5 样例输出 Copy 63 提示【样例说明】 往第1个框里投数字为1的球,往第2个框里投数字为2的球,往第3个球头数字为3、4、5的球   最终第1个框分数为1, 第2个框分数为2,第3个框分数为60,总分为63,这是最优方案    【数据范围】 对于30%的数据 2<=每个球上的数字<=10 对于70%的数据 n,m<=8,1<=每个球上的数字<=10 对于100%的数据n,m<=15,0<=每个球上的数字<=10
▼优质解答
答案和解析
var a:array[1..15]of integer; n,m,i,j,k,t:integer; s:int64;
begin
read(n,m);
if n>m then begin writeln(-1); exit end;
for i:=1 to m do read(a[i]);
for i:=1 to n do
begin
k:=i;
for j:=i+1 to n do
if a[j] t:=a[i]; a[i]:=a[k]; a[k]:=t;
end;
s:=1;
for i:=n to m do s:=s*a[i];
for i:=1 to n-1 do inc(s,a[i]);
writeln(s);
end.