2 条题解

  • 1
    @ 2024-12-10 16:56:33
    #include<iostream>
    using namespace std;
    int n,l,r;
    int main(){
    	cin>>n>>l>>r;
    	if(l/n==r/n) cout<<r%n;
    	else cout<<n-1;
    	return 0;
    }
    
    • 1
      @ 2024-8-18 9:20:33

      [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
      标签
      递交数
      62
      已通过
      9
      上传者