/*将C(n,k)质因数分解,然后约束个数按公式计算 */#include#include #include #include using namespace std;#define ll long long int v[1000],prime[1000],m,c[200],p[200];void init(int n){ memset(prime,0,sizeof prime); memset(v,0,sizeof v); m=0; for(int i=2;i<=n;i++){ if(v[i]==0){ v[i]=i; prime[++m]=i; } for(int j=1;j<=m;j++){ if(prime[j]>v[i] || prime[j]*i>n) break; v[i*prime[j]]=prime[j]; } }}int cal(int p,int n){ int ret=0,tmp=p; while(tmp<=n){ ret+=n/tmp; tmp*=p; } return ret;}int main(){ int n,k; init(500); while(scanf("%d%d",&n,&k)==2){ memset(c,0,sizeof c); memset(p,0,sizeof p); ll ans=1; for(int i=1;i<=m;i++){ if(prime[i]>n) break; c[i]+=cal(prime[i],n); } for(int i=1;i<=m;i++){ if(prime[i]>n-k)break; c[i]-=cal(prime[i],n-k); } for(int i=1;i<=m;i++){ if(prime[i]>k) break; c[i]-=cal(prime[i],k); } for(int i=1;i<=m;i++) if(c[i]) ans*=(c[i]+1); printf("%lld\n",ans); }}