田园的饭可好吃了
題目來源
中北大學2018年新生賽
題目描述
田園餐廳有一個能放下m個人的圓桌。
那是去年的一個雨天,他和n - 1個學弟,在田園餐廳買飯,并且他們占下了那個圓桌。
問圓桌的座位有多少種坐法,當然不一定全部的人都能坐到圓桌上。
n >= m
輸入描述
每行,一個數n,一個數m
若n =m = -1則輸出'EndOfSolution'并退出程序
否則,保證m,n∈{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
n >= m
輸出描述
每行一個整數表示方案數
樣例輸入
1 1
2 1
3 1
4 1
20 2
-1 -1
樣例輸出
1
2
3
4
EndOfSolution
題解:
從n個人里邊取出m個人,總共有 ?C種,然后考慮排列,m個人全排列有m!種情況,但是飯桌是個圓的,每種排列經過旋轉后總共有m種,也就是每種情況算了m次,所以排列的種類總共有m!/m種,也就是(m-1)!,最終答案就是??C*(m-1)! 。最后輸出“EndOfSolution”不要輸回車符。
代碼
#include<algorithm> #include <iostream> #include<cstring> #include <cstdio> using namespace std; typedef long long ll; const int maxn=1e5+10; ll n,m; ll f(ll x){if(x==0||x==1) return 1;ll ans=1;for(ll i=2;i<=x;i++){ans*=i;}return ans; } int main(){while(scanf("%lld%lld",&n,&m)){if(n==-1&&m==-1){printf("EndOfSolution");break;}ll ans=f(n)/f(m)/f(n-m)*f(m-1);cout<<ans<<endl;}return 0; }?
總結
- 上一篇: STM32F103ZE TFT液晶代码移
- 下一篇: 女性如何理解男人的性需求? 男性的性表达