codeforces 888D.Almost Identity Permutations

来源:互联网 发布:linux修改环境变量 编辑:程序博客网 时间:2024/06/05 07:02

一道很简单的数学组合题

直接上代码

#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<string>#include<stack>#include<queue>#include<cmath>#include<stack>#include<list>#include<map>#include<set>#define lson i<<1#define rson i<<1|1#define up(i,x,y) for(i=x;i<=y;i++)#define down(i,x,y) for(i=x;i>=y;i--)#define mem(a,x) memset(a,x,sizeof(a))#define gi(x) scanf("%d",&x)#define gi2(x,y) scanf("%d%d",&x,&y)#define gll(x) scanf("%lld",&x)#define gll2(x,y) scanf("%lld%lld",&x,&y)#define gc(x) scanf("%c",&x)#define gc2(x,y) scanf("%c%c",&x,&y)using namespace std;const double eps=1e-8; typedef long long ll;const int MAXN=100005;const int mod=1000000007;const ll llinf = (ll)(1e18) + 500;const int inf=0x3f3f3f3f;ll c[1006][1005];void init(){c[0][0]=1;for (int i = 1; i <= 1005; i++){c[i][0] = 1;for (int j = 1; j <= 15; j++) c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]);}}int main() {int i,j,k;int n;scanf("%d%d",&n,&k);init();ll ans=0;if(k==1){printf("1\n");return 0;}else if(k==2){ans+=c[n][k]*1+1;}else if(k==3){ans+=c[n][k]*2+c[n][k-1]+1;}else {ans+=c[n][k]*9+c[n][k-1]*2+c[n][k-2]+1;}printf("%lld\n",ans);}

原创粉丝点击