2 条题解

  • 1
    @ 2024-10-1 15:13:28

    ……?

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n, l, r;
        cin>>n>>l>>r;
        if(r-l >= n-1){
            cout<<n-1;
        }else if(l%n <= r%n){ 
            cout<<r%n;
        }else if(l%n > r%n){
            cout<<n-1;
        }
    }
    
    • 0
      @ 2024-8-23 14:17:07

      这个题可能很多人会想到用模拟的方法来去做这道题,但是请看这个题的数据范围: 如果用for循环从l到r之间进行枚举的话,那么这个题就肯定会

      TT掉

      所以我们该怎么办呢?答案也是用模拟的方式,只不过这个模拟可能不太一样。首先从零开始,每次把变量t增加一个n这样一直增加下去,总有一天这个t变量会超过l变量。等到超过了的时候,我们在对其进行一点一点的枚举。看最多能够拿到多少块糖作为我们分糖果的奖励。按照这样子的做法,这个题我们就可以轻松

      AcceptedAccepted

      so

      AC代码走起

      #include <bits/stdc++.h>
      #define ios ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
      #define LL long long int
      using namespace std;
      LL n,L,R,t;
      int main() {
      	ios;
      	scanf("%lld%lld%lld",&n,&L,&R);
      	t=n;
      	while(1) {
      		if(t+n>L) break;
      		t+=n;
      	}
      	for(int i=n-1;; i--) {
      		if(t+i<=R) {
      			printf("%d\n",i);
      			break;
      		}
      	}
      	return 0;
      }
      

      最后建议大家

      一定要开O2!!!

      • 1

      信息

      ID
      484
      时间
      1000ms
      内存
      512MiB
      难度
      7
      标签
      递交数
      136
      已通过
      30
      上传者