B. Numbers on the Chessboard

题目链接

Educational Codeforces Round 49 (Rated for Div. 2)--B. Numbers on the Chessboard

题解

简单题,题意大概是在一个 n * n 的矩阵内隔一个位置放置一个数,大概长这样
1 9 2 10
11 3 12 4
5 13 6 14
15 7 16 8
或这样
1 14 2 15 3
16 4 17 5 18
6 19 7 20 8
21 9 22 10 23
11 24 12 25 13
给出多个询问询问某个位置的数字。

直接计算即可,具体参照代码。

代码

#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;

int main() {
    ll n, q, x, y;
    cin >> n >> q;
    for (int i = 1; i <= q; i++) {
        cin >> x >> y;
        ll ans = 0;
        if ((x + y) % 2 == 1) {
            ans += (n*n - 1) / 2 + 1;
        }
        if (n % 2 == 1) {
            ans += (x - 1) / 2 * n;
            if ((x + y) % 2 == 1)
                ans += (x - 1) % 2 * (n / 2);
            else
                ans += (x - 1) % 2 * (n / 2 + 1);
            ans += (y + 1) / 2;
        }
        else if (n % 2 == 0) {
            ans += (x - 1) * n / 2;
            ans += (y + 1) / 2;
        }
        cout << ans << endl;
    }
}

标签: implementation

添加新评论