码迷,mamicode.com
首页 > 其他好文 > 详细

uva 11538 - Chess Queen(数论)

时间:2014-05-15 14:36:21      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:style   class   code   c   tar   color   

题目链接:uva 11538 - Chess Queen

题目大意:在一个n?m的棋盘上,放两个皇后,要求两个皇后可以互相攻击,求有多少种放法。

解题思路:因为皇后的攻击范围为竖线、横线和斜线,所以枚举每条上两个皇后放的位置,比如一条斜线有8个,那么放两个皇后的种数就有C(82)种。
行数n,每行m个位置C(m2)?n
列数m,每列n个位置C(n2)?m
斜线,2?(2?i=1n?1i?(i?1)+(m?n+1)?n?(n?1)),因为正斜线和翻斜线,所以要乘以2
最后公式化简为2?n?(n?1)?(3?m?n?1)3

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>

using namespace std;
typedef unsigned long long ll;

ll n, m;
int main () {
    while (cin >> n >> m) {
        if (!(n + m))
            break;

        if (m < n)
            swap(n, m);

        cout << n * m * (n+m-2) + 2 * n * (n-1)*(3*m-n-1)/3 << endl;
    }
    return 0;
}

uva 11538 - Chess Queen(数论),布布扣,bubuko.com

uva 11538 - Chess Queen(数论)

标签:style   class   code   c   tar   color   

原文地址:http://blog.csdn.net/keshuai19940722/article/details/25743209

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!