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; }
» 本博客采用署名 2.5 中国大陆许可协议进行许可，本文版权归作者所有，欢迎转载，但必须在明显位置给出原文连接。