玫瑰花题目虽然有重复,应该可以利用容斥原理计算(去除重复元素):
例1: n= 3 k =2 结果为6
解释:(2^3)          -    C21  (1^3) = 14
               k中颜色全排列   -    选出k-1中颜色全排列
例2: n= 4  k =3 结果为 36
解释:  (3^4)                -             C3 2  (2^4)        +   C31  (1^4) = 36
               k中颜色全排列   -    选出k-1种颜色全排列     +  选出k-2中颜色全排列
// n!
int n_1(int n)
{
    if(n ==0)
        return 1;
    int temp =1;
    for(int i=n;i>=1;i--)
        temp = temp * i % mod ;
    return temp;
}
// k^n
int k_n(int k,int n)
{
    int temp = 1;
    while(n>=1)
    {
        temp = temp*k% mod ;
        n--;
    }
    return temp;
}
int main()
{    
    int n,k;
    while(cin >> n >>k)
    {
        int sign = 1, result =0;
        if(n < k)
            cout << 0 << endl;
        else
            for(int i=k;i>0;i--,sign*=-1)
                //C(下标n,上标k) = n! / ((n-k)! * k!)
                result += sign * k_n(i,n) * n_1(k) / (n_1(i) * n_1(k -i));
        cout << result << endl;
    }
    return 0;
}