题解 | 剩下的数
剩下的数
https://www.nowcoder.com/practice/f80366f2611640c1abc6e5655c51ea2c
思路
对于每个查询,答案取决于整个环的和是否能被 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;
}
