题解 | 剩下的数

剩下的数

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;
}

全部评论
tql
点赞 回复 分享
发布于 12-17 18:54 河北
tql
点赞 回复 分享
发布于 12-17 11:39 江苏
orz
点赞 回复 分享
发布于 12-17 11:10 山东

相关推荐

评论
8
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务