K.田园的饭可好吃了
生活随笔
收集整理的這篇文章主要介紹了
K.田园的饭可好吃了
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
眾所周知,nbv是實驗室最有親和力的學(xué)長之一。
田園餐廳有一個能放下m個人的圓桌。
那是去年的一個雨天,他和n - 1個學(xué)弟,在田園餐廳買飯,并且他們占下了那個圓桌。
問圓桌的座位有多少種坐法,當(dāng)然不一定全部的人都能坐到圓桌上。
n >= m
?
?
提示:如果您很細(xì)心,并看到了這句話,你將知道這是一個用排列組合知識解決的題。
輸入描述
每行,一個數(shù)n,一個數(shù)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
輸出描述
每行一個整數(shù)表示方案數(shù)
樣例輸入
1 1 2 1 3 1 4 1 20 2 -1 -1樣例輸出
1 2 3 4 190 EndOfSolution來源
中北大學(xué)2018年新生賽
提示
輸出結(jié)果比較大,可能超過2^31-1,請在推出公式后,根據(jù)最大值的大致取值,選擇更好的類型
如果不知道有什么更好的類型,可以使用數(shù)組模擬計算
例如
a+b
a = 97
b=? 66
A={9,7}
B={6,6}
c = a+b
C= {15,13} = {1,6,3}
c = 163
?
需特別注意除法運算
請原諒練題都沒有看懂的我……orz?
#include<cstdio> #include<vector> #include<queue> #include<iostream> #include<set> using namespace std;long long a[25][25],sum; priority_queue<int,vector<int>,greater<int> >q; multiset<int> s;int main() {int n,m;a[0][0]=1;for(int i=1;i<=20;i++) {a[i][0]=1;for(int j=1;j<=i;j++) a[i][j]=a[i-1][j]+a[i-1][j-1];}while(cin>>n>>m){sum=1;if(n==-1&&m==-1){cout<<"EndOfSolution"<<endl;return 0;}for(int i=m-1;i>0;i--) sum*=i;cout<<a[n][m]*sum<<endl;}return 0; }總結(jié)
以上是生活随笔為你收集整理的K.田园的饭可好吃了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内外知名的IT社区
- 下一篇: AMD Opteron 185 + AT