NC213472. 爱丽丝的人偶(二)
描述
输入描述
第一行输入两个正整数和,用空格隔开。第二行输入个正整数,代表这个人偶的型号。
输出描述
一个整数,代表最终方案的数量对取模的值。
示例1
输入:
5 2 1 2 3 2 1
输出:
3
说明:
C++(clang++11) 解法, 执行用时: 81ms, 内存消耗: 5276K, 提交时间: 2020-11-21 14:08:03
#include <bits/stdc++.h> #define ll long long using namespace std; const ll mod = 1e9+7; const int N = 1e5+10; unordered_map<ll,int> mp; ll f[N]; ll qpow(ll a,ll b){ ll ans=1; while(b){ if(b&1) ans=ans*a%mod; a=(a*a)%mod; b>>=1; } return ans; } int main(void){ int n,k; cin>>n>>k; f[0]=1; for(int i=1;i<=n;i++){ ll x; cin>>x; mp[x]++; f[i]=f[i-1]*i%mod; } n=mp.size(); if(n<k) cout<<0; else cout<<(f[n]*qpow(f[k]*f[n-k]%mod,mod-2)%mod); return 0; }
Python3 解法, 执行用时: 1818ms, 内存消耗: 22616K, 提交时间: 2022-09-14 21:04:21
import math n,k=map(int,input().split()) s=list(map(int,input().split())) li=set(s) #print(li) print(int(math.comb(len(li),k)%1000000007))