## SGU 222 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=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.

### Input

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

### Output

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.

```4 4
```

```24
```

### CODE

```#include
#include
long long f(int n)
{
long long ans=1;
while(n) ans*=n--;
return ans;
}
int main()
{
int n,k;
scanf("%d%d",&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;
}
```