题意 你在一个n*m个白色正方形格子组成的矩形的某个顶点格子 你沿着45度角的方向走 到了边界就改变方向90度 每次经过一个格子都改变他原来的颜(白或灰) 求你走到另一个顶点格子时矩形中有多少格子是灰色的
这题可以用公式也可以直接模拟 模拟就是一直向右移n-1位 每次超过边界就可以把边界向右移m-1位 用cnt记录超过边界的次数 那么每次都会经过cnt个已经走过的格子 (每个格子最多经过2次) 答案也就减去2*cnt 直到刚好到达边界
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n, m, cur, cnt, ans, k;
while(~scanf("%lld%lld", &n, &m))
{
if (n > m) swap(n, m);
cur = ans = 1, cnt = 0, k = m;
while(cur != k)
{
cur += n - 1, ans += n - 1 - 2 * cnt;
if(cur > k) k += m - 1, ++cnt;
}
printf("%lld\n", ans);
}
return 0;
}| input | output |
|---|---|
7 5 |
11 |
2 3 |
3 |
URAL 1762 Search for a Hiding-Place(数学·模拟)
原文地址:http://blog.csdn.net/acvay/article/details/44204637