Problem A
Chess Queen
Input: Standard Input
Output: Standard Output
王后互相攻击的前提是在一行,一列,或一对角线。:
|
![](https://img-my.csdn.net/uploads/201304/05/1365128653_3965.png)
在 (NxM) 的棋盘上 2 王后互相攻击,求方案数.
Input
输入数据不超过 5000 行 ,每行为M and N (0< M, N£106) ,数据以0 0结尾.
Output
每行一个整数表示方案数,保证它在u64范围内.
Sample Input Output for Sample Input
2 2 100 223 2300 1000 0 0 | 12 10907100 11514134000 |
Problemsetter: Shahriar Manzoor
Special Thanks to: Mohammad Mahmudur Rahman
首先,一个矩形的长宽若为m,n(m>=n)
那么它一个方向的对角线应为1..(n-1)各2条,n有(m-n+1)条
知道这个的化,本题就转化为,在一列一行或一对角线任取2点,有几种取法。
#include<cstdio>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
#define MAXN (1000000+10)
unsigned long long n,m;
int main()
{
while (cin>>n>>m&&n&&m)
{
if (n>m) swap(n,m);
cout<<n*m*(n+m-2)+2*n*(n-1)*(3*m-n-1)/3<<endl;
}
return 0;
}