Submission #20005

#TimeUsernameProblemLanguageResultExecution timeMemory
20005tonyjjw카드 (kriii4_Z)C++14
13 / 100
26 ms72288 KiB
//* #include <stdio.h> #include <string.h> #include <ctype.h> #include <time.h> #include <stdlib.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <numeric> #include <functional> #define MOD 1000000007 #define MAX 0x3f3f3f3f #define MAX2 0x3f3f3f3f3f3f3f3fll #define ERR 1e-10 #define mp make_pair #define all(x) (x).begin(), (x).end() #pragma warning(disable:4996) using namespace std; typedef long long ll; typedef long double ldb; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<double, double> pdd; ll mul_inv(ll a, ll b=MOD) { ll b0=b, t, q; ll x0=0, x1=1; if(b == 1) return 1; while(a > 1) { q=a/b; t=b, b=a%b, a=t; t=x0, x0=x1-q*x0, x1=t; } if(x1 < 0) x1+=b0; return x1; } ll modpow(ll x, ll y) { ll ans=1; while(y) { if(y%2) ans*=x, ans%=MOD; x*=x, x%=MOD, y/=2; } return ans; } ll N, L; int a[5000]; ll ncr[3005][3005]; int main() { int i, j, k; cin>>N>>L; for(i=0;i<=N;i++) for(j=0;j<=i;j++) ncr[i][j]=j==0||j==i?1:ncr[i-1][j-1]+ncr[i-1][j], ncr[i][j]%=MOD; for(i=0;i<N;i++) scanf("%d", &a[i]); int n=count(a, a+N, 1); ll ans=0; for(k=0;k<=n;k++) { ans+=modpow(-1, k)*modpow(N-k, L)%MOD*ncr[n][k]; ans%=MOD; } ans*=mul_inv(modpow(N, L)); ans%=MOD; ans+=MOD; ans%=MOD; cout<<ans; return 0; } //*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...