解析
1.两个皇后在一列的情况m*n*(m-1)
2.两个皇后在一行的情况m*n*(n-1)
3.两个皇后在斜线上
假设m>n
对角线上的长度是L,那么L一定是这样的数列1,2...n-1,n...n,n-1...2,1(n有m-n+1)
每条斜线上的情况是L*(L-1)种
#include<cstdio>
#include<algorithm>
using namespace std;
typedef unsigned long long LL;
LL N,M;
int main()
{
while(scanf("%lld%lld",&N,&M)==2)
{
if(N==0) break;
if(N>M) swap(N,M);//N<M
LL ans=N*M*(N+M-2);
ans+=((LL)(N-1)*(N-2)*(2*N-3)/3+(LL)(N-2)*(N-1)+(LL)(M-N+1)*N*(N-1))*2;
printf("%lld\n",ans);
}
return 0;
}