Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- using namespace std;
- long long int derrangement(long long i)
- {
- if(i == 1 || i==0) return 0;
- if(i==2) return 1;
- return (i-1) * (derrangement(i-1) + derrangement(i-2));
- }
- long long int factorial(long long int n)
- {
- if(n==0 || n==1) return 1;
- long long sum = 1;
- for(long long int i = 1; i<=n; i++) sum*=i;
- return sum;
- }
- long long combination(long long int n, long long int r)
- {
- long long int factN = factorial(n);
- long long int factR = factorial(r);
- long long int factNR = factorial(n-r);
- return factN/(factNR*factR);
- }
- int main()
- {
- //freopen("in.txt", "r", stdin);
- //freopen("out.txt", "w+", stdout);
- long long int a, b;
- while(cin>>a>>b)
- {
- long long res = derrangement(a);
- for(long long i=1;i<=b;i++)
- {
- res+=combination(a,i)*derrangement(a-i);
- }
- if(a==b) res++;
- cout<<res<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement