Chess Queen Uva 11538(基础计数原理)

来源:互联网 发布:今日大宗交易数据 编辑:程序博客网 时间:2024/05/31 15:19

题意

将黑色皇后和白色皇后两个皇后放到一个 n * m的棋盘当中,使得她们能够相互攻击,请问有多少种放置方法?

分析

这道题用到了分类讨论的思想,如果两个皇后相互攻击,那么有三种情况,两者同列、两者同行、两者同对角线。同对角线的数量推起来稍微麻烦一点。然后将三种相加即可。

代码

c++#include <iostream>#include <cstring>#include <algorithm>using namespace std;long long n, m;int main(int argc, const char * argv[]) {    while(scanf("%lld%lld", &n, &m) != EOF){        if(!n && !m) break;        if(n > m) swap(n, m);        long long ans = n * m * (n + m -2) + 2 * n * (n - 1) * (3 * m - n - 1) / 3;        printf("%lld\n", ans);    }    return 0;}
原创粉丝点击