玫瑰花题目虽然有重复,应该可以利用容斥原理计算(去除重复元素): 例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; }
点赞 2

相关推荐

xxxxOxo:这公司幽默得很,要了简历半天一点动静都没有,过一会就给你发个邮件让你做测试,做完又没后文了,纯溜人
点赞 评论 收藏
分享
牛客鼠:校友你这简历基本无敌了,春招刷刷题去冲大厂
点赞 评论 收藏
分享
牛客网
牛客企业服务