时间限制:1秒 内存限制:64M
【问题描述】
你可能知道象棋怎么下以及皇后的移动规则。当两个皇后在同一行、同一列或同一条斜线上时,她们就会互相攻击。假设两个这样的皇后(一黑一白)被放在一个2×2的棋盘上,她们可以有12种互相攻击的方式,请看下图:
给出一个N×M的棋盘,计算有多少种放法能使两个皇后互相攻击。
【输入格式】
输入至多包含5000行。每一行有两个非负整数N、M(0
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
typedef unsigned long long ll;
ll n,m;
ll ans;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int x,y;
scanf("%d%d",&x,&y);
while(x!=0||y!=0)
{
n=x,m=y,ans=0;
ans+=n*m*(n+m-2);
if(m>n) swap(n,m);
ans+=(2*m*(m-1)*(3*n-m-1))/3;
cout<<ans<<endl;
scanf("%d%d",&x,&y);
}
return 0;
}