1 条题解

  • 0
    @ 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
    标签
    递交数
    61
    已通过
    8
    上传者