본문 바로가기

백준

24270 미니 버킷 리스트

 

 

빈칸을 일정 사이사이에 넣는 경우의 수는 중복 조합으로 구할 수 있다

 

일정 사이 개수: n+1 (일정 +1)

빈칸 개수: k - sum, rest라고 표현하겠음

 

일정의 경우의 수: n!

 

빈칸 경우의 수 * 일정 경우의 수 곱하면 된다.

수식은 위 사진과 같이 정리할 수 있음.

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#include <stdio.h>
#include <math.h>
#include <sstream>
#include<cassert>
#include <climits>
#include <tuple>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MAXV 987654321
#define FOR(i, n) for(int i = 0; i < (n); ++i)

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using iis = pair<int, string>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

int main() {
	i64 n, k;
	scanf("%lld %lld", &n, &k);
	
	i64 sum = 0;
	for (int i = 0; i < n; i++) {
	    i64 x;
	    scanf("%lld", &x);
	    sum += x;
	}
    i64 rest = k - sum;
    
	i64 ans = 1;
    for (i64 i = 1; i <= n; i++) {
        ans = (i + rest) * ans % 1000000007;
    }
	
	printf("%lld\n", ans);
    
	return 0;
}

 

 

 

'백준' 카테고리의 다른 글

16166 서울의 지하철  (1) 2024.04.27
23074 자연수 색칠하기 2  (0) 2024.04.13
23562 ㄷ 만들기  (1) 2023.11.04
26595 전투의 신  (1) 2023.10.07
18248 제야의 종  (1) 2023.10.07