long long Comb(long long n,long long r)
{
long long ans;
if(n<r)
return 0;
if(s[n][r]!=0)
return s[n][r];
ans=(Comb(n-1,r)+Comb(n-1,r-1))%mod;
s[n][r]=ans;
return ans;
}
Example #2
0
int solve(){
	int sl = strlen(str);
	int i,j;
	int ret=0;
	for(i=1;i<sl;i++)
		if(str[i-1]>=str[i])
			return 0;
	for(i=0;i<sl;i++)
	    ret += Comb(26,i);
	for(i=0;i<sl;i++){
		j=str[i]-'a';
		for(j--;j>=(i==0?0:str[i-1]-'a'+1);j--)
            ret += Comb(25-j,sl-i-1);
	}
	return ret;
}
Example #3
0
 void Comb(int n, int k, int start, vector<int> &solution) {
     if (k == 0) {
         res.push_back(solution);
         return;
     }
     for (int i = start; i <= n; i++) {
         solution.push_back(i);
         Comb(n, k - 1, i + 1, solution);
         solution.pop_back();
     }
 }
int main()
{
    long long n,i,r;
    scanf("%lld %lld", &n, &r);
    if(n<r)
        printf("-1\n");
    else if((n==r)||(r==1))
        printf("1\n");
    else
    {
        for(i=0;i<n;i++)
        s[i][1]=i;
        printf("%lld\n",Comb(n-1,r-1));
    }

return 0;
}
Example #5
0
int Comb(int n,int k){
	if(k<0||k>n)return 0;
	if(k==0||k==n)return 1;
	if(C[n][k]>=0) return C[n][k];
	return (C[n][k]=Comb(n-1,k-1)+Comb(n-1,k));
}
Example #6
0
 vector<vector<int>> combine(int n, int k) {
     vector<int> solution;
     Comb(n, k, 1, solution);
     return res;
 }