D - Almost Identity Permutations /* Codeforces Round 888 D */

D. Almost Identity Permutations
 
Description

    A permutation p of size n is an array such that every integer from 1 to n occurs exactly once in this array.

    Let's call a permutation an almost identity permutation iff there exist at least n - k indices i (1 ≤ i ≤ n) such that pi = i.

    Your task is to count the number of almost identity permutations for given numbers n and k.

Input

    The first line contains two integers n and k (4 ≤ n ≤ 1000, 1 ≤ k ≤ 4).

Output

    Print the number of almost identity permutations for given n and k.

Examples
Input
4 1
Output
1
Input
4 2
Output
7
Input
5 3
Output
31
Input
5 4
Output
76

题意:
就是有一个集合里面是1~n个元素,但是这些元素的排列是随机的。问最多有多少个这样的排列,使得至少有n-k个 pi=i。
代码:(????)
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5 ////先交一发别人的代码回头研究  = = 这个规律很膨胀啊 !!!
 6     long long n,k,ar=1;
 7     cin>>n>>k;
 8     if(k>=2) ar+=n*(n-1)/2;
 9     if(k>=3) ar+=n*(n-1)*(n-2)/3;
10     if(k>=4) ar+=n*(n-1)*(n-2)*(n-3)*3/8;
11     cout<<ar;
12     return 0;
13 }
View Code

 

转载于:https://www.cnblogs.com/xxQ-1999/p/7857817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值