描述
相信大家都玩过中国象棋,象棋里面的“车”能吃掉同一行或同一列的任意棋子,现给定一个n*n的方格,在其中放入m个“车”共有几种不同的放法。注意,同一行或同一列只能放一个“车”,如图,R2的放法就是错误的。
输入
输入多组数据,每组数据包含两个整数n(1<=n<=5),m(1<=m<=n*n)。
输出
将这m个“车”都放入这个矩阵中一共有几种放法。
样例输入
1 1
2 1
4 4
4 5
样例输出
1
4
24
0
找规律...
#include<stdio.h>
/*
n*n*(n-1)*(n-1)……(n-m)*(n-m)
————————————————
1*2*3……m
*/
int main()
{
int n,m,s,i,h;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(m>n) printf("0\n");
else
{
if(m==1)
printf("%d\n",n*n);
else
{
int s1=1,s2=1;
for(i=1;i<=m;i++)
s1=s1*n*n,n--;
for(i=1;i<=m;i++)
s2=s2*i;
printf("%d\n",s1/s2);
}
}
}
}