1 条题解
-
0
[CSP-J 2021] 分糖果 这是一道比较水的题,拿完的糖果都归你 只要篮子里有不少于n块糖果, 幼儿园的所有n个小朋友(包括你自己) 都从篮子中拿走恰好一块糖, 直到篮子里的糖数量少于n块 也就是说拿了的糖果取模N就是你能得到的 所以首先想到了枚举L~N,遍历到一个数就取模, 如果大于ans就把ans更新为这个数 最后就把ans输出就成了 #include<bits/stdc++.h> using namespace std; long long n,l,r,ans=0; int main(){ cin>>n>>l>>r; for(int i=l;i<=r;i++)if(i%n>ans)ans=i%n;//遍历ans cout<<ans; return 0; } 测评出来是90分,试了试数据后发现当N大于40000000后会TLE, 但这个大小会使R不可能小于2N,所以可以用R直接取模N。 Ac代码如下 #include<bits/stdc++.h> using namespace std; long long n,l,r,ans=0; int main(){ cin>>n>>l>>r; if(r<2*n){//判断是否能直接取模N cout<<r%n;//直接取模 return 0;//结束进程防止误判 } for(int i=l;i<=r;i++){ if(i%n>ans)ans=i%n; if(ans==n-1)break;//多一个判定缩小数据范围 } cout<<ans; return 0; }
- 1
信息
- ID
- 780
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 61
- 已通过
- 8
- 上传者