当前位置:网站首页>一本通2074:【21CSPJ普及组】分糖果(candy)
一本通2074:【21CSPJ普及组】分糖果(candy)
2022-08-09 21:51:00 【竹林居士-】
题目
原题链接http://ybt.ssoier.cn:8088/problem_show.php?pid=2074【题目描述】
红太阳幼儿园的小朋友们开始分糖果啦!
红太阳幼儿园有 n 个小朋友,你是其中之一。保证 n≥2。
有一天你在幼儿园的后花园里发现无穷多颗糖果,你打算拿一些糖果回去分给幼儿园的小朋友们。
由于你只是个平平无奇的幼儿园小朋友,所以你的体力有限,至多只能拿 R 块糖回去。
但是拿的太少不够分的,所以你至少要拿 L 块糖回去。保证 n≤L≤R。
也就是说,如果你拿了 k 块糖,那么你需要保证 L≤k≤R。
如果你拿了 k 块糖,你将把这 k 块糖放到篮子里,并要求大家按照如下方案分糖果:只要篮子里有不少于n 块糖果,幼儿园的所有 n 个小朋友(包括你自己)都从篮子中拿走恰好一块糖,直到篮子里的糖数量少于 n 块。此时篮子里剩余的糖果均归你所有——这些糖果是作为你 搬糖果的奖励。
作为幼儿园高质量小朋友,你希望让作为你搬糖果的奖励的糖果数量(而不是你最后获得的总糖果数量!)尽可能多;因此你需要写一个程序,依次输入 n, L, R,并输出你最多能获得多少作为你搬糖果的奖励的糖果数量。
【输入】
输入一行,包含三个正整数 n, L, R,分别表示小朋友的个数、糖果数量的下界和上界。
【输出】
输出一行一个整数,表示你最多能获得的作为你搬糖果的奖励的糖果数量。
【输入样例】
7 16 23
【输出样例】
6
【提示】
【样例1解释】
拿 k=20 块糖放入篮子里。
篮子里现在糖果数 20≥n=7,因此所有小朋友获得一块糖;
篮子里现在糖果数变成 13≥n=7,因此所有小朋友获得一块糖;
篮子里现在糖果数变成 6<n=7,因此这 6 块糖是作为你搬糖果的奖励。
容易发现,你获得的作为你搬糖果的奖励的糖果数量不可能超过 6 块(不然,篮子里的糖果数量最后仍然不少于 n,需要继续每个小朋友拿一块),因此答案是 6。
【样例2输入】
10 14 18
【样例2输出】
8
【样例2解释】
容易发现,当你拿的糖数量 k 满足 14=L≤k≤R=18 时,所有小朋友获得一块糖后,剩下的 k−10 块糖总是作为你搬糖果的奖励的糖果数量,因此拿 k=18 块是最优解,答案是 8。
【数据范围】
——————————————————————————————————————
这道题出题人非常仁慈,直接把测试点给出来,打表就能拿分
最简单的思路莫过于循环枚举,轮流判断就行了。代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,l,r,maxn=-1,s;
int main()
{
cin>>n>>l>>r;
for(int i=l;i<=r;i++)
{
s=i%n;
if(s>maxn) maxn=s;
}
cout<<maxn<<endl;
return 0;
}
我自信满满的交上去,然而......
再一看题目,明白了。评测机一秒运行10的6次方次,数据范围最大到10的9次方
然后就想到了一个办法,所有答案无非只有两种情况:
1.余数包含了n-1 输出n-1
2.余数没有包含n-1 输出R÷n
那怎么判断有没有包含n-1呢?
如果包含了n-1,L÷n和R÷n商肯定不同。因此写出了如下代码:
#include<iostream>
using namespace std;
int n,l,r;
int main()
{
cin>>n>>l>>r;
if(l/n==r/n) cout<<r%n; //如果没有达到余数等于n,直接输出r/n
else cout<<n-1;//否则输出n-1
return 0;
}
然后就AC了
新手,请多指教
边栏推荐
- 线段相交的应用
- 上海控安SmartRocket系列产品推介(三):SmartRocket iVerifier计算机联锁系统验证工具
- SecureCRT强制卸载
- Solution: Edu Codeforces 109 (div2)
- Synchronization lock synchronized traces the source
- NetCore路由的Endpoint模式
- Don't tell me to play, I'm taking the PMP exam: what you need to know about choosing an institution for the PMP exam
- Excel如何打出正负号?Excel打出正负号的方法
- In programming languages, the difference between remainder and modulo
- The overall construction process of the Tensorflow model
猜你喜欢
Sudoku | Backtrack-7
Word第一页不要页眉怎么设置?设置Word首页不要页眉方法教程
几种绘制时间线图的方法
Quotefancy ,提供鼓舞人心语录的壁纸网站 - 倾城之链
APP自动化测试框架-UiAutomator2基础入门
Simple questions peek into mathematics
上海控安SmartRocket系列产品推介(三):SmartRocket iVerifier计算机联锁系统验证工具
浅谈Numpy中的shape、reshape函数的区别
AI Knows Everything: Building and Deploying a Sign Language Recognition System from Zero
筑牢安全防线 鹤壁经济技术开发区开展安全生产培训
随机推荐
如何让您的公司内容满足 GDPR 合规性
The round functions in the np, ceil function and floor function
hdu 1333 Smith Numbers(暴力思路)
在“企业通讯录”的盲区,融云的边界与分寸
ACM MM 2022 | Cloud2Sketch: 长空云作画,AI笔生花
BulkInsert方法实现批量导入
AI+Medical: Using Neural Networks for Medical Image Recognition and Analysis
AI识万物:从0搭建和部署手语识别系统
Word文档怎么输入无穷大符号∞
SecureCRT背景配色
SQLi-LABS Page-2 (Adv Injections)
How to Make Your Company Content GDPR Compliant
The kvm virtual machine cannot be started, NOT available, and the PV is larger than the partition
Tensorflow中使用convert_to_tensor去指定数据的类型
Xiaohei's leetcode journey: 94. Inorder traversal of binary trees (supplementary Morris inorder traversal)
Usage of placeholder function in Tensorflow
OpenMLDB + Jupyter Notebook:快速搭建机器学习应用
mysql配置参数详解[通俗易懂]
【测试】语句覆盖,判定覆盖,条件覆盖,路径覆盖
必看设计干货|易知微设计师是怎么做标准可视化设计服务的?