(一)读懂题目
关键词:n个小朋友,至多只能拿R块糖,至少要拿L块糖
关键句:平均分至少于n块,剩余的糖果均归你所有,这些糖果是你的奖励。
(二)分析算法+时间复杂度和空间复杂度
枚举算法,时间复杂度O(n)
(三)代码实现
(做完本题后,我去看看别的大佬的代码,发现就我代码最长……)
好,加过注释的代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
int n,l,r;
int main(){scanf("%d%d%d",&n,&l,&r);int max=0;int m=l%n;if(r==n||r<n||l<n){printf("0\n");return 0;}if(l==r){for(int i=l;i<=r;i++){int t=i%n;if(t==n-1){printf("%d\n",t);return 0;}if(max<t){max=t;}}printf("%d\n",max);return 0;}if(m==n-1){printf("%d\n",m);return 0;}for(int i=1;i+l<=r;i++){int t=i+m;if(t>=n){continue;}if(max<t){max=t;}}printf("%d\n",max);return 0;
}
(四)总结反思
说过了,做完之后我看了看别的大佬的代码,都好简便,感觉就我最low……
不过他们的代码思路确实不错,有空也要学一学,简化下自己的代码。