SDJ( 수돈재 아님 ㅎ )

[C++] 11881 - 지우개 본문

알고리즘/Backjoon

[C++] 11881 - 지우개

ShinDongJun 2020. 2. 1. 08:30

문제 링크 : https://www.acmicpc.net/problem/11881

 

11881번: 지우개

첫 번째 줄에 만들 수 있는 지우개들의 부피의 합을 출력합니다. 승현이는 프로그램이 제대로 동작하는 것부터 검증하기를 원하므로, 1,000,000,007 (109+7)로 나눈 나머지를 출력합시다.

www.acmicpc.net

 

 

ai < aj < ak를 만족시켜야 하므로

aj를 고정된 값으로 두고 ai와 ak를 더해서 곱해주는 형식으로 답을 구했다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
 
#define endl '\n'
#define mod 1000000007
 
using namespace std;
 
int COUNT[100005];
unsigned long long DP[1000005];
unsigned long long ans;
 
int main(void)
{
    int n, tmp;
    cin >> n;
    for(int i = 0; i < n; ++i)
    {
        cin >> tmp;
        COUNT[tmp]++;
    }
 
    for(int i = 1; i <= 100000++i)
        DP[i] = (DP[i-1+ i*COUNT[i]);
 
    for(int i = 1; i <= 100000++i)
        ans = (ans+((DP[i-1]*(DP[i]-DP[i-1])%mod)*(DP[100000]-DP[i])%mod)%mod)%mod;
 
    cout << ans << endl;
    
    return 0;
}

'알고리즘 > Backjoon' 카테고리의 다른 글

[C++] 2589 - 보물섬  (0) 2020.02.01
[C++] 1963 - 소수 경로  (0) 2020.02.01
[C++] 2166 - 다각형의 면적  (0) 2020.01.30
[C++] 1759 - 암호 만들기  (0) 2020.01.30
[Python3] 18291 - 비요뜨의 징검다리 건너기  (0) 2020.01.30
Comments