题目名称:小豚鼠搬家
时间限制:1000ms内存限制:256M
题目描述
小豚鼠排排坐。 小艺酱买了一排排格子的小房子n*m,她想让k只小豚鼠每只小豚鼠都有自己的房子。 但是为了不浪费空间,她想要小房子的最外圈尽量每行每列都有一只小豚鼠居住。 小艺酱想知道自己有多少种方案安排小豚鼠。
输入描述:
输入整数n,m,k。(1<=n,m<=20,0<=k<=n*m)
输出描述:
输出方案数,答案对1e9+7取模。
示例:
输入:3 3 2
输出:2
解题思路:
1 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 1 |
#include<stdio.h>
int fac(int n, int m, int k)
{
int a = n * m - 2;//当前所剩格子
int b = k - 2;//当前所剩鼠鼠
int num = 1;
while (b--)//循环b次
num = num * (a--);
return num;
}
int main()
{
int n, m, k = 0;
int i, j = 0;
int count = 0;//方案次数
scanf("%d%d%d", &n, &m, &k);
if (k == 1)
printf("%d\n", n * m);//鼠鼠个数为1,直接输出房间个数
else
{
count = 2 * fac(n, m, k);
printf("%d\n", count);
}
return 0;
}