#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
using namespace std;
double d1, d2;
int n;
double ans, d, tmp1, tmp2;
int main() {
while (~scanf("%d",&n))
{
scanf("%lf", &d1);
ans = d2 = d1;
for(int i=1; i<n; i++) {
scanf("%lf", &d);
tmp1 = d1 * d;
tmp2 = d2 * d;
d1 = max(max(tmp1,tmp2),d);
d2 = min(min(tmp1,tmp2),d);
if(d1 > ans)
ans = d1;
}
int t = (int)ans;
if(ans < 0) {
puts("-1");
} else {
if(ans == t)
printf("%d\n",t);
else printf("%.2f\n",ans);
}
}
}
题目1501:最大连续子序列乘积
最新推荐文章于 2019-01-05 14:06:58 发布
这是一个关于计算最大连续子序列乘积的程序。通过读取整数n和多个double类型数值,使用双变量d1和d2记录当前最大值和最小值,以避免负数乘积导致的最小值变为最大值的情况。最终输出结果,如果所有乘积为负,则输出-1,否则保留两位小数或整数形式。
摘要由CSDN通过智能技术生成