P7909 [CSP-J 2021] 分糖果
题意
我要分糖果给n个小朋友,分多少次都没关系,但是,最后剩下的糖果要给自己。求自己最多拿到糖果的数量。
思路
- 定义输入
- if、else语句,分情况。
- 一种情况情况是能力与实际差不多,二是能力与实际差很多。
坑点
- 分两种情况,一是l与r差不多,二是l与r差很多。
算法一:数学推理
时间复杂度
- 输出大小: 1.83200645446777 MiB
- 编译时间: 0.77s
实现步骤
- 定义输入
- if、else语句:一种情况情况是能力与实际差不多,二是能力与实际差很多。
- 差不多的是:能力取整=实际取整,差很多的是:人数的倍数在实际和能力之间。
代码
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,l,r;
cin>>n>>l>>r;
if(l/n==r/n)//第一种情况,能力与一定要拿的差不多时
{
cout<<r%n;//取余
}
else//第二个情况,能力与一定要拿的差很多。
{
cout<<n-1;//最多拿人数减一个。
}
return 0;
}
总结
有点小难,但是相同了就可以了,要有一定的数学推理思维,对于想通的小盆友来说,其实不难。但是,想不通的很难,一定要分情况。加油吧各位。