首页 > 代码库 > UVA 11538【象棋中的皇后】Chess Queen
UVA 11538【象棋中的皇后】Chess Queen
1.问题描述
本题主要是讲如何在一个给定的n*m棋盘中放置互相攻击的皇后(处于同一行,或者同一列,或者对角线上的任意两个位置(都不一定两者相邻)),求所能得到互相攻击的皇后的情况。
2.题意分析
本题主要考查加法原理和乘法原理的应用。根据题意可知,我们可以氛围以下方法进行分类求解(加法原理):
(1)处于同一行的相互攻击的皇后种数:
(2)处于同一列的相互攻击的皇后种数:
(3)处于对角线的相互攻击的皇后种数(我们假设n<=m):
本公式很容易证明得出结果。
那么最后的结果我们可以归纳为:
3.AC代码
#include<iostream>#include<algorithm>//注意头文件的使用using namespace std;int main(){ long long n,m; while(cin>>n>>m&&n&&m) { if(n>m)swap(m,n);//swap函数功能强大 cout<<n*m*(m+n-2)+2*n*(n-1)*(3*m-n-1)/3<<endl; } return 0;}
UVA 11538【象棋中的皇后】Chess Queen
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。