Syntax

500문제 달성!!

스니펫 활용해본다고 적당한 세그트리 문제 골랐는데, 아이디어 떠올리는게 좀 어려웠다  

약 3년전에 시작해서 조금씩 풀던게 벌써 500문제… 더 잘해지고 싶다.

Image Description

첫 글

저키로 처음 블로그를 만들어보았다

마크다운도 처음써보는데 신기하다


#include <bits/stdc++.h>

#define ll long long int

#define swap(a,b) {ll c; c=a;a=b;b=c;}

#define MOD 1000000007

#define pii pair<int,int>

#define iii tuple<int,int,int>

using namespace std;

  

ll multi(ll i,ll k){

    if(k==1) return i;

    if(k==0) return 1;

    if(k%2==1) return ((i*multi(i,k/2))%MOD*multi(i,k/2))%MOD;

    else return (multi(i,k/2)*multi(i,k/2))%MOD;

}

  

int main(){

    int n,k,a[2001];

    cin>>n>>k;

    for(int i=0;i<n;i++) cin>>a[i];

    ll setsu = 1;

    for(int i=0;i<k-1;i++){

        setsu = (setsu*2)%MOD;

    }

    ll ncrtop = 1, ncrbot = 1;

    for(int i=0;i<k;i++){

        ncrtop = (ncrtop*(n-i))%MOD;

        ncrbot = (ncrbot*(i+1))%MOD;

    }

    ll div = (ncrtop*multi(ncrbot,MOD-2))%MOD;

    cout<<(setsu*div)%MOD;

}

신기하지 않은가?? 아닌가??