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;
}
반응형