C언어

코드업 4424 연속부분최대곱

mcdn 2021. 2. 6. 02:08
반응형

4424 : 연속 부분 최대곱 해결

시간 제한: 1 Sec  메모리 제한: 512 MB

제출: 1380  해결 문제 수: 602

www.codeup.kr/problem.php?id=4424

 

연속 부분 최대곱

문제1) N개의 양의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면,

www.codeup.kr

문제1)

N개의 양의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면,

1.1 0.7 1.3 0.9 1.4 0.8 0.7 1.4

색칠된 부분의 곱이 최대가 되며, 그 값은 1.638이다.

입력

첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다.

출력

계산된 최대값을 소수점 이하 넷째 자리에서 반올림하여 소수점 이하 셋째 자리까지 출력한다.

입력 예시   예시 복사

8 1.1 0.7 1.3 0.9 1.4 0.8 0.7 1.4

출력 예시

1.638

 

#include <iostream>
using namespace std;

double arr[10005];
double dd[10005];

int main(void)
{
	int n;
	cin >> n;

	arr[0] = 1;
	for (int i = 1; i <= n; i++)
	{
		cin >> arr[i];

	}
	double max;
	dd[0] = 1;
	max = 0;
	for (int i = 1; i <= n; i++)
	{
		if (dd[i - 1] < 1)
			dd[i] = 1;
		else
			dd[i] = dd[i - 1];
		dd[i] *= arr[i];
		if (max < dd[i])
			max = dd[i];

	}
	printf("%.3f", max);
//	cout << max;
}

 

 

 

 

 

반응형