百练 4021:最大乘积(JAVA实现)

给定一个整数数组,我们希望去掉其中一个数,使得剩下所有数的乘积最大,问应该去掉哪一个数

输入

第一行M,表示有M组数据
接下来2*M行,每两行表示一组测试数据,每组的第一行市一个整数N,表示是数组的长度,接下来一行有N个整数,表示数组的内容,3<=N<=100,且数组内每个数都在[-10000000,10000000]区间内.

输出

M行,每行一个整数,表示应该去掉的那个数,如果有多个选择,则输出最先输入的那个.

样例输入

样例输入

4
3
0 1 2
5
2 3 5 4 8
5
-1 -2 -3 -4 -5
4
-1 -2 -3 -4

样例输出

0
2
-1
-4

 

枚举就完事了,注意要使用大数。

不知道数据范围的,把第一种情况作为初值!!!吃血亏了!!

另外引用分类讨论的做法: 看这

import java.math.BigInteger;
import java.util.Scanner;

public class Main
{
  public static void main(String []args)
  {
    Scanner cin=new Scanner(System.in);
    int m=cin.nextInt();
    BigInteger arr[]=new BigInteger [105];
    while(m--!=0)
    {
      long n=cin.nextInt();
      BigInteger out=BigInteger.ZERO;
      BigInteger multi=BigInteger.ONE,curr=BigInteger.ONE;
      for(int i=0;i<n;i++)
        arr[i]=cin.nextBigInteger();
      for(int j=1;j<n;j++)
      {
        curr=curr.multiply(arr[j]);	
      }
      out=arr[0];
      for(int i=0;i<n;i++)
      {
        for(int j=0;j<n;j++)
        {
          if(j==i) continue;
          else multi=multi.multiply(arr[j]);
        }
        if(multi.compareTo(curr)>0) 
        {
          out=arr[i];
          curr=multi;
        }
        multi=BigInteger.ONE;
      }
      System.out.println(out.toString());
    }
  }

}

 

《百练 4021:最大乘积(JAVA实现)》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 × 1 =