rt,我貌似发现了一种算法,时间复杂度 O(n),空间复杂度 O(1),代码量小,而且和组合比不容易爆 int。
#include<bits/stdc++.h>
using namespace std;
int pascal(int n,int m){
if(m>(n+1))return -1;
if(m>(n+1)/2)m=(n+1-m)+1;
register int val=1,x=1;
while(x<m){
if(val%x==0){
val/=x;
val*=(n-x+1);
}
x++;
}
return val;
}
int main(){
int n,m;
cin>>n>>m;
cout<<pascal(n,m);
}