首页 > 剩下的数
头像 Bezime
发表于 2025-12-17 00:38:04
题目大意 给定 到 所有整数按顺序组成的环。 一次询问 中,牛牛一次可以删除一段总和为 倍数的连续的数,可以操作无限次。 共询问 次。 解题思路 对于一次询问 ,考虑 到 的总和对 取模为 ,即 如果 ,那么一次操作即可删完所有数,答案为 。 否则,答案必然大于 。 展开全文
头像 Xuan2333
发表于 2025-12-17 08:43:01
思路对于每个查询,答案取决于整个环的和是否能被 x 整除。如果能整除,则可以通过一次操作删除整个环,剩余 0 个数;否则,总存在一个数a使得剩余数的和能被 x 整除,从而通过一次操作删除除a外的所有数,剩余1个数。因此,答案只需判断总和sum模x是否为零。复杂度计算sum的时间为 O(1)。每个询问 展开全文
头像 _已被标记为牛弊_Refrain_Y
发表于 2025-12-17 00:12:06
通过拉马努金瞪眼法发现,总是有删除区间中一个数就能得到x的倍数的情况所以只要这段的总和不能被整除则为1,否则为0 void Refra1n() { ll l,r;cin>>l>>r; ll sum=((l+r)*(r-l+1))/2; ll m;cin 展开全文
头像 quchen666
发表于 2025-12-17 10:35:07
#include <bits/stdc++.h> using namespace std; typedef long long ll; void solve() { ll l,r; int m; cin>>l>>r; cin> 展开全文
头像 周康禧
发表于 2025-12-17 15:25:41
注意x的数据范围,r-l+1一定大于等于x,那么就说明在l到r的这个区间中一定具备取模得到0~x-1的完全剩余周期,即每有x个连续的数字就会有一个 取模 0 ,1,2,...,x-1的循环(第一个不一定是0,但是最后集合都是一样的)那么我们考虑如果能全部选就是总和对x取模为0,如果不满足就去掉l到r 展开全文
头像 olone
发表于 2025-12-17 11:49:01
#include<iostream> #define int long long using namespace std; int T; int l,r; int m; signed main() { scanf("%lld",&T); 展开全文
头像 牛客937992666号
发表于 2025-12-19 00:22:48
纯思维题目 给了范围,且, 那么将所有数字对取模,得到的余数0, 1, 2, 3, ... x - 1都至少出现一次 如果是的倍数,那么, 即,那么就不会剩下一个数字,即答案为0 否则我们拿出这个数字:,也只需要拿出一个数字 所以答案只会是0或1 总代码: 展开全文
头像 alij
发表于 2025-12-17 16:43:30
tag:鸽巢原理 令,根据可以有下面两种情况: 如果,那么可以把所有数都选了; 否则,那么我们是否可以找到一个数取模等于呢?结论是一定可以的,将都对取模,因为,所以区间对取模后会包含所有,所以我们一定可以找到一个数,所以最终只会剩下这一个数。 因此如果,输出1;否则输出0。 #include & 展开全文
头像 怎么不AC啊
发表于 2025-12-17 21:24:14
由于,存在s.t. ,因此数组 进而等价于,由于成环,进而等价于 考虑,若,那么全部一次即可删除,若非零,那么, ,由于成环,将之外的数全部删除即会留下一个无法删除的数。因此结果即为 #include <iostream> using namespace std; int main() 展开全文
头像 牛客376963804号
发表于 2025-12-17 22:05:35
#include <stdio.h> int main() { long long T=0; scanf("%lld",&T); for(long long j=0;j<T;j++) { long long l,r 展开全文