UVA 11538 Chess Queen

来源:互联网 发布:线切割自动编程软件 编辑:程序博客网 时间:2024/06/10 09:23

题意:给你个n*m的棋盘,问你有多少种方法放置两个相互攻击的皇后?

Sol:利用加法原理A+B+C(A:同一行的方案数,B:同一列的方案数,C:对角线的方案数)

A=nm(m-1)   B=nm(n-1)  C=(2n(n-1)(3m-n-1))/3 ;

 

#include <cstdio>#include <algorithm>using namespace std;typedef unsigned long long ULL;int main(){ULL n,m;while(~scanf("%lld%lld",&n,&m),n+m){if(n>m)  swap(n,m);ULL ans=n*m*(n+m-2)+2*n*(n-1)*(3*m-n-1)/3;printf("%lld\n",ans);}return 0;}

原创粉丝点击