N명이 학생들의 성적이 주어졌을 때
학번의 구간이 주어지면 그 구간 성적의 평균을 구하기
1 ≤ N ≤ 106 인 정수
1 ≤ K ≤ 104 인 정수
1 ≤ Si ≤ 100 인 정수
1 ≤ Ai ≤ Bi ≤ N
첫 번째 줄에 학생 수 N과 구간 수 K가 주어진다.
두 번째 줄에는 학생의 성적 Si (1 ≤ i ≤ N)가 주어진다. i + 2 (1 ≤ i ≤ K)번째 줄에는 i번째 구간 Ai, Bi가 주어진다.
i번째 줄에 i번째 구간의 성적평균(소수셋째자리에서 반올림)을 출력한다.
차이가 0.01이하이면 정답으로 채점됨.
n+1
의 전체 배열을 생성하고, i
번째 학생의 성적을 인덱스 i
에 대입한다.Ai
, Bi
에 대해서 인덱스 Ai
부터 시작하여 Bi
까지 1씩 증가하며 성적의 합을 구한다.2
를 K번 반복한다.1
: 리스트 생성 cin >> N >> K;
// N : 학생 수
// K : 구간 수
std_list = new int[N+1]();
for (i=1; i<=N; i++) {
cin >> std_list[i];
}
2
: 구간 내에서 성적의 합 구해서 출력 void CalcAverage(int from, int to) {
float sum = 0;
for (int i=from; i<=to; i++) {
sum += std_list[i];
}
float average = sum / (to - from + 1);
average = round(100 * average) / 100;
cout << average << endl;
}
3
: K번 반복 for (i=0; i<K; i++) {
cin >> A >> B;
CalcAverage(A, B);
}
int a = 10;
int b = 3;
cout << a/b << endl; // 3
float c = 10;
cout << c/b << endl; // 3.3333...
round()
함수를 거치고 으로 나누기float a = 1.345798;
cout << round(100 * a) / 100 << endl; // 1.34