思路

对于每个查询,答案取决于整个环的和是否能被 x 整除。如果能整除,则可以通过一次操作删除整个环,剩余 0 个数;否则,总存在一个数a使得剩余数的和能被 x 整除,从而通过一次操作删除除a外的所有数,剩余1个数。因此,答案只需判断总和sum模x是否为零。

复杂度

  • 计算sum的时间为 O(1)。
  • 每个询问只需一次取模操作,时间复杂度O(1)。
  • 总时间复杂度为 O(∑m),满足要求。
#include <bits/stdc++.h>
using namespace std;
#define sc second
#define fr first
#define int long long
#define vi vector<int>
#define vvi vector<vector<int>>
// const int mod = 998244353;
// const int mod = 1e10 + 7;
int n, m, k, num, q, l = 1, r = 1e10;
string s;
void _()
{
    int sum = 0;
    int x;
    cin >> l >> r;
    sum += ((l + r) * (r - l + 1) / 2);//计算环上所有数的和
    cin >> q;
    while (q--)
    {
        cin >> x;
        cout << (sum % x == 0 ? "0" : "1") << endl;
    }
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int awa = 1;
    cin >> awa;//喜欢的话别忘了点个赞哦awa
    while (awa--)
    {
        _();
    }
    return 0;
}