답안 #20001

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
20001 2016-02-25T08:20:58 Z tonyjjw 카드 (kriii4_Z) C++14
0 / 100
9 ms 72288 KB
//*
#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;
	cout<<ans;
	return 0;
}
//*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 72288 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Halted 0 ms 0 KB -