2 条题解

  • 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!!!

    信息

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