UVA-11538 Chess Queen(数学)

链接UVA-11538

题意:给出皇后的放置方法:同行、同列、同对角线,让求n*m棋盘里面放两皇后的情况总数。

思路:
同行的: n*m*(m-1)
同列的: m*n*(n-1)
对角线的则比较复杂了:
例如右上方的,对角线长度分别为1、2、3……n-1


长度为i的皇后情况有i*(i-1)种,所以为∑i*(i-1)
然后又有左下方、右下方、左上方,即4*∑
然后长度为n的有m-n+1(设m>n)(规律)


此时的皇后情况为(m-n+1)*n*(n-1)
最后对角线的情况就是2*n*(n-1)*(3*m-n-1)/3,,(我没算这个……
即n*m*(n+m-2) + 2*n*(n-1)*(3*m-n-1)/3

注意范围ull

/*


*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    unsigned long long n,m;
    while(cin >> n >> m)
    {
        if(!n && !m)
            break;
        if(n > m)
            swap(n,m);
        cout << n*m*(n+m-2) + 2*n*(n-1)*(3*m-n-1)/3 <<endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值