QBCOND - Quan hệ có điều kiện
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
main()
{
long long n,k,C[11][11],f[11][46];
for(long long i=0;i<=10;i++)
for(long long j=0;j<=10;j++)
C[i][j]=0;
for(long long i=1;i<=10;i++)
for(long long j=i;j<=10;j++)
{
C[i][j]=1;
for(long long k=2;k<=j;k++)
C[i][j]*=k;
for(long long k=2;k<=i;k++)
C[i][j]=C[i][j]/k;
for(long long k=2;k<=(j-i);k++)
C[i][j]=C[i][j]/k;
}
for(long long i=0;i<=10;i++)
C[0][i]=1;
for(long long i=0;i<=10;i++)
for(long long j=0;j<=45;j++)
f[i][j]=0;
f[0][0]=1;f[1][0]=1;
for(long long i=2;i<=10;i++)
for(long long j=0;j<=i;j++)
for(long long k=0;k<=C[2][i-j];k++)
f[i][C[2][j]+k]=f[i][C[2][j]+k]+C[j][i]*f[i-j][k];
while(1)
{
scanf("%lld",&n);
if(n==-1)
break;
scanf("%lld",&k);
if(k>45)
printf("0\n");
else
printf("%lld\n",f[n][k]);
}
//getch();
}