#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<cmath> using namespace std; typedef long long ll; ll n, m; ll h[1005]; const ll mod = 1e9+7; ll power(ll a, ll k) { if(k==0)return 1; ll p,q; p = a%mod; q = 1; while(k!=1) { if(k & 1) { k--; q = ((p%mod)*(q%mod))%mod; } else { k/=2; p = ((p%mod)*(p%mod))%mod; } } return ((p%mod)*(q%mod))%mod; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&m); for(int i=0;i<n;i++) { scanf("%lld",&h[i]); ll tmp; tmp = h[i]/6; if((h[i]%6>0))tmp++; h[i] = tmp; } ll tmp2[1005],tmp3[1005]; tmp2[0] =tmp3[m] = 1; for(int j = 1;j<=m;j++) { tmp2[j] = (tmp2[j-1]*(m-j+1)/j)%mod; tmp3[m-j] = (tmp3[m-j+1]*(n-1))%mod; } ll tmp; tmp = power(n,m); tmp = power(tmp,1e9+5); for(int i=0;i<n;i++) { ll sum = 0; for(int j = m;j>=h[i];j--) { sum+=(tmp2[j]*tmp3[j])%mod; sum%=mod; } h[i]=((sum%mod)*tmp)%mod; printf("%lld",h[i]); if(i==n-1) printf("\n"); else printf(" "); } } } |
Double click to view unformatted code.