有电脑网站怎么做手机网站,杭州网站建设外包公司,桂林两江四湖附近酒店,梅州网站制作理解题意
ZZX学长在正因街买了一个白色的方格画板, 他想把画板固定在墙上绘画. 白色画板不能转动, 画板上有nn的网格, ZZX可以选择任意多行及任意多列的格子涂成黑色(选择的整行, 列均需涂成黑色), 所选行数, 列数均可为0. ZZX希望最终的成品上需要有k个黑色格子, 请告诉ZZX共…理解题意
ZZX学长在正因街买了一个白色的方格画板, 他想把画板固定在墙上绘画. 白色画板不能转动, 画板上有n×n的网格, ZZX可以选择任意多行及任意多列的格子涂成黑色(选择的整行, 列均需涂成黑色), 所选行数, 列数均可为0. ZZX希望最终的成品上需要有k个黑色格子, 请告诉ZZX共有多少种涂色方案 注意: 两个方案中任意一个相同位置的格子颜色不同就视为不同的方案, 若不存在对应的涂色方案, 则为0. 数据范围
1 n 6, 0 k n * n
输入格式:
第一行输入整数n, 第二行输入整数k
输出格式:
输出涂色方案的数量 输入样例:
在这里给出一组输入。例如
2
2输出样例:
在这里给出相应的输出。例如
4代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB 代码如下示例 #include iostream
using namespace std;
int J(int i){ //计算阶乘if(i1||i0) return 1;return i*J(i-1);
}
inline int C(int m,int n){ //计算组合数if(n0||nm) return 1;if(n1) return m;return J(m)/(J(n)*J(m-n));
}
int main(){int n,k;cinn;cink;int mk/n; //如果列数行数为0至少需要m行列int cnt0;if(kn*n){ //铺满cout1;return 0;}for(int im;i0;i--){ for(int j0;jm;j){if(n*(ij)-i*jk){cntC(n,i)*C(n,j);} }}
coutcnt;
} 另外
输入 4 8 输出12
输入 4 10 输出98 计算组合数格外注意不要计算成排列数