JZOJ__DAY 4:【普及模拟】最大值
生活随笔
收集整理的這篇文章主要介紹了
JZOJ__DAY 4:【普及模拟】最大值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
給定n個數,{x1,x2,...,xn}要求從中選出至少一個數,至多n個數,使得乘積之和最大。輸入
第一行整數n,表示有多少個數接下來n行,每行一個整數xi,-10?≤xi≤?10
輸出
輸出一行,表示最大乘積樣例輸入
Sample Input1: 3 -1 2 -4Sample Input2: 3 3 2 -4樣例輸出
Sample Output1: 8Sample Output2: 6數據范圍限制
對于70%的數據:1?≤?n?≤?9對于100%的數據: 1?≤?n?≤?18,-10?≤xi≤?10
題意 在n個數里,找出幾個數,把它們相乘,使乘積最大。
分析 我們在輸入時,把不是0的數乘起來,并統計0的個數,把最大的負數記錄下來。 最后我們可以分為幾種情況: 1.如果ans小于0,并且ans不等于最大的負數,那么ans=ans div max(最大的負數)。 2.如果全都是0,那么就輸出0,否則輸出ans。
程序: var x,w,k,n,i,max:longint; ans:int64; beginreadln(n);max:=-10;ans:=1;for i:=1 to n dobeginreadln(x);if x<>0 then ans:=ans*x else inc(w);if x<0 thenbeginif max<x then max:=x;end;end;if (ans<0)and(ans<>max) then ans:=ans div max;if w=n then write(0) else write(ans); end.
轉載于:https://www.cnblogs.com/YYC-0304/p/9500094.html
總結
以上是生活随笔為你收集整理的JZOJ__DAY 4:【普及模拟】最大值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ__Day 1:【普及模拟】PL
- 下一篇: JZOJ__Day 4:【普及模拟】游戏