zoukankan      html  css  js  c++  java
  • JZOJ__DAY 4:【普及模拟】最大值

    题目描述

    给定n个数,{x1,x2,...,xn}要求从中选出至少一个数,至多n个数,使得乘积之和最大。

    输入

    第一行整数n,表示有多少个数
    接下来n行,每行一个整数xi,-10 ≤xi≤ 10

    输出

    输出一行,表示最大乘积

    样例输入

    Sample Input1:
    3
    -1
    2
    -4
    
    Sample Input2:
    3
    3
    2
    -4
     

    样例输出

    Sample Output1:
    8
    
    
    Sample 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;
    begin
        readln(n);
        max:=-10;
        ans:=1;
        for i:=1 to n do
        begin
            readln(x);
            if x<>0 then ans:=ans*x else inc(w);
            if x<0 then
            begin
                if 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.
  • 相关阅读:
    第12课
    第11课
    第6课
    第5课
    ubuntu apache 通过端口新建多个站点
    phpstudy所需运行库
    ubuntu 修改和配置ip
    Linux Cp命令
    Ubuntu各个版本的镜像下载地址
    ubuntu 虚拟机添加多个站点
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500094.html
Copyright © 2011-2022 走看看