Uva 11538 象棋中的皇后

题目链接:https://uva.onlinejudge.org/external/115/11538.pdf

两个皇后,n行m列,互相攻击的情况有多少种?

分析:

1、同一行的情况:n*m(m-1)

2、同一列的情况:n*m(n-1)

3、对角线:

设n<=m;

从左到右的 "/" 对角线上,依次是1,2,3,...,n-1,n,n,n(m-n+1个n),n-1,n-2,...,1个空格。

那么这种对角线总和为:

由于有两种对角线,还要乘以2

Tip:

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     unsigned long long n,m;
 8     while(cin>>n>>m) {
 9         if(n==0) break;
10 
11         if(n>m) swap(n,m);
12 
13         cout<<n*m*(m-1)+n*m*(n-1)+2*n*(n-1)*(3*m-n-1)/3<<endl;
14 
15     }
16     return 0;
17 }
原文地址:https://www.cnblogs.com/TreeDream/p/6385509.html