分糖果
题意
分糖果,输出搬糖果的小朋友最多能额外拿到的糖果数量。
思路
- 读取输入的三个整数n、l和r。
- 判断l和r是否相等。
- 根据判断结果,输出相应的奖励糖果数量。
坑点
- 题目要求的是作为你搬糖果的奖励的糖果数量,而不是最后获得的总糖果数量
- l≤r
算法一:条件判断
时间复杂度
O(1)
实现步骤
- 读取输入的小朋友个数n、糖果数量的下界l和上界r。
- 判断l和r是否在同一余数区间内,即l/n是否等于r/n。
- 根据判断结果,输出相应的奖励糖果数量。如果l和r在同一余数区间内,输出r%n;否则输出n-1
代码
cpp
#include<iostream>
#include<cstdio>
using namespace std;
int n,l,r;//输入的小朋友个数、糖果数量的下界和上界
int main(){
cin>>n>>l>>r;
if(l/n==r/n)//判断糖果数量的下界l和上界r是否在同一余数区间内
{
cout<<r%n;
//l和r在同一个余数区间内的情况下,输出r除以n的余数,即最大奖励
}
else{
cout<<n-1;
//l和r不在同一个余数区间内的情况下,输出n-1,为最多能获得的数量。
}
return 0;
}
总结
是一道关于小朋友在分糖果游戏中如何获得最大奖励的问题。主要的是对题目意思的理解。需要读懂题意,理清思路。