SGU 222 解题报告

222. Little Rooks

time limit per test: 1 sec.
memory limit per test: 65536 KB

Inspired by a “Little Bishops” problem, Petya now wants to solve problem for rooks.

A rook is a piece used in the game of chess which is played on a board of square grids. A rook can only move horizontally and vertically from its current position and two rooks attack each other if one is on the path of the other.

Given two numbers n and k, your job is to determine the number of ways one can put k rooks on an n × n chessboard so that no two of them are in attacking positions.

受小主教问题的启发, Petya现在决定解决一个关于车的问题.


给定两个数n和k,你的工作是要计算出在n× n的棋盘中放置K个车,使他们不会相互攻击的方案数量.


The input file contains two integers n (1 ≤ n ≤ 10) and k (0 ≤ k ≤ n2).


Print a line containing the total number of ways one can put the given number of rooks on a chessboard of the given size so that no two of them are in attacking positions.

Sample Input

4 4

Sample Output



long long f(int n)
  long long ans=1;
  while(n) ans*=n--;
  return ans;
int main()
  int n,k;
  if(k>n) printf("0n");
  else printf("%lldn",f(k)*(f(n)/f(k)/f(n-k))*(f(n)/f(k)/f(n-k)));
  return 0;

0 条评论。


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>