본문 바로가기

문제 풀이/문제 풀이(BOJ)

[Silver IV] 순서쌍의 곱의 합 - 13900

[문제 링크] : https://www.acmicpc.net/problem/13900

### 성능 요약

메모리: 3464 KB, 시간: 44 ms

### 분류

수학, 누적 합

### 제출 일자

2023년 12월 19일 01:26:58

### 문제 설명

N개의 정수 중 서로 다른 위치의 두 수를 뽑는 모든 경우의 두 수의 곱의 합을 구하라.

예를 들어 N = 3이고 주어진 정수가 2, 3, 4일 때, 두 수를 뽑는 모든 경우는 (2, 3), (2, 4), (3, 4)이며 이때 각각의 곱은 6, 8, 12이다. 따라서 총합은 26이다.

### 입력

첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000)

두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다.

### 출력

모든 경우의 곱의 합을 출력한다.

### 작성한 코드

#include 
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;

int main() {
	int N;
	cin >> N;
	long arr[100000];
	for (int i = 0; i < N; ++i) {
		cin >> arr[i];
	}
	long answer = 0;
	long psum[100000];

	psum[0] = arr[0];

	for (int i = 1; i < N; ++i) {
		psum[i] = psum[i - 1] + arr[i];
	}

	for (int i = 0; i < N - 1; ++i) {
		answer += arr[i] * (psum[N - 1] - psum[i]);
	}

	cout << answer;

}

'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글

[Bronze III] 최댓값 - 2566  (0) 2023.12.20
[Silver V] 2차원 배열의 합 - 2167  (1) 2023.12.20
백준 13458: 시험감독  (0) 2023.12.12
백준 30889: 좌석 배치도  (0) 2023.12.05
백준 2214: 로프  (0) 2023.12.01