您的位置:首页 > 产品设计 > UI/UE

UVA 11538 Chess Queen

2014-12-06 16:43 302 查看
问题描述

解析

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: