UVa 11538 - Chess Queen
2010-12-20 17:17
357 查看
Problem A
Chess Queen
Input:
Standard Input
Output:
Standard
Output
You probably know how the game of
chess is played and how chess queen operates. Two chess queens are in attacking
position when they are on same row, column or diagonal of a chess board.
Suppose two such chess queens (one black and the other white) are placed on
(2x2) chess board. They can be in attacking positions in 12 ways, these are
shown in the picture below:
Given an (N
xM
)
board you will have to decide in how many ways 2 queens can be in attacking
position in that.
Input
Input file can contain up to 5000
lines of inputs. Each line contains two non-negative integers which denote the
value of M
and N
(0< M, N
£
106
) respectively.
Input is terminated by a line containing two zeroes.
These two zeroes need not be processed.
Output
For each line of input produce
one line of output. This line contains an integer which denotes in how many
ways two queens can be in attacking position in an (MxN
) board, where
the values of M
and N
came from the input. All output values will
fit in 64-bit signed integer.
Sample
这个题目我感觉比较水,皇后有八个方向可以攻击,分为三种横向的,纵向的,对角的。对于一个
n*m
的棋盘,横纵考虑有
n*(m-1)*m+(n-1)*m*n
方式,对于对角的方向上,有
2
(斜率
1
和
-1
两种情况)
*2*
(
1*
(
1-1
)
+2*1+3*2+……..+s*(s-1)*2
)
- 2*(b-s-1)*s*(s-1)
种方式。
其中
s
为
n
和
m
中较小者,
b
为较大者;这个题目在
uva
上
ac
了,不过交了两遍,是因为我用了
__int64
编译错误。还有一开始中间数据没有用
64
位结果样例就没有过。题目虽然不难但是还是提醒我一些东西,要是比赛中犯了这些错误可不值啊。
Chess Queen
Input:
Standard Input
Output:
Standard
Output
You probably know how the game of
chess is played and how chess queen operates. Two chess queens are in attacking
position when they are on same row, column or diagonal of a chess board.
Suppose two such chess queens (one black and the other white) are placed on
(2x2) chess board. They can be in attacking positions in 12 ways, these are
shown in the picture below:
| |||
Figure: in a (2x2) chessboard 2 queens can be in attacking position in 12 ways |
xM
)
board you will have to decide in how many ways 2 queens can be in attacking
position in that.
Input
Input file can contain up to 5000
lines of inputs. Each line contains two non-negative integers which denote the
value of M
and N
(0< M, N
£
106
) respectively.
Input is terminated by a line containing two zeroes.
These two zeroes need not be processed.
Output
For each line of input produceone line of output. This line contains an integer which denotes in how many
ways two queens can be in attacking position in an (MxN
) board, where
the values of M
and N
came from the input. All output values will
fit in 64-bit signed integer.
Sample
Input Output for Sample Input
2 2 100 223 2300 1000 0 0 | 12 10907100 11514134000 |
n*m
的棋盘,横纵考虑有
n*(m-1)*m+(n-1)*m*n
方式,对于对角的方向上,有
2
(斜率
1
和
-1
两种情况)
*2*
(
1*
(
1-1
)
+2*1+3*2+……..+s*(s-1)*2
)
- 2*(b-s-1)*s*(s-1)
种方式。
其中
s
为
n
和
m
中较小者,
b
为较大者;这个题目在
uva
上
ac
了,不过交了两遍,是因为我用了
__int64
编译错误。还有一开始中间数据没有用
64
位结果样例就没有过。题目虽然不难但是还是提醒我一些东西,要是比赛中犯了这些错误可不值啊。
#include <iostream> using namespace std; int main() { long long sum; long long n,m; while(cin>>n>>m) { if(n==0&&m==0) break; sum=0; sum+=n*(m-1)*m+(n-1)*m*n; //cout<<sum<<endl; long long s,b; if(n>m) { s=m; b=n; } else { if(m>n) { s=n; b=m; } else { b=n; s=n; } } //cout<<4*(s*(s+1)/2*(2*s+1)/3-s*(s+1)/2)+2*(b-s-1)*s*(s-1)<<endl; sum+=4*(s*(s+1)/2*(2*s+1)/3-s*(s+1)/2)+2*(b-s-1)*s*(s-1); cout<<sum<<endl; } return 0; }
相关文章推荐
- UVA 11538 Chess Queen
- Uva 11538 - Chess Queen
- UVA 11538 - Chess Queen(数论+计数问题)
- UVA 11538 Chess Queen
- UVA 11538 Chess Queen
- UVA 11538 Chess Queen
- UVA 11538 Chess Queen
- uva 11538 - Chess Queen 先分步还是先分类? 计数问题
- uva 11538 Chess Queen
- UVA 11538 Chess Queen
- uva 11538 Chess Queen
- UVA - 11538 —— Chess Queen
- uva 11538 Chess Queen
- Uva11538 Chess Queen
- UVA - 11538 Chess Queen
- UVA11538 Chess Queen
- 【组合计数】UVA - 11538 - Chess Queen
- UVA 11538(Chess Queen-矩阵对角线长度)
- UVA 11538 Chess Queen
- UVA - 11538 Chess Queen