当前位置:网站首页>一本通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了
新手,请多指教
边栏推荐
- supervisor 命令操作大全「建议收藏」
- Multiple reasons for MySQL slow query
- TF uses constant to generate data
- json事例
- TF生成均匀分布的tensor
- Tensorflow中使用convert_to_tensor去指定数据的类型
- 宝塔实测-搭建LightPicture开源图床系统
- Reinforcement Learning Weekly Issue 57: DL-DRL, FedDRL & Deep VULMAN
- MySQL:错误1153(08S01):得到的数据包大于“ max_allowed_packet”字节
- The kvm virtual machine cannot be started, NOT available, and the PV is larger than the partition
猜你喜欢
Synchronization lock synchronized traces the source
RHEL7系统修复rm -rf /boot /etc/fstab
在VMware上安装win虚拟机
cad图纸怎么复制到word文档里面?Word里插CAD图怎么弄?
小黑leetcode清爽雨天之旅,刚吃完宇飞牛肉面、麻辣烫和啤酒:112. 路径总和
Install Mysql8.0 on windos, and solve the problem of re-login exception ERROR 1045 (28000)
筑牢安全防线 鹤壁经济技术开发区开展安全生产培训
[Implementation of the interface for adding, deleting, checking, and modifying a double-linked list]
Reinforcement Learning Weekly Issue 57: DL-DRL, FedDRL & Deep VULMAN
POWER SOURCE ETA埃塔电源维修FHG24SX-U概述
随机推荐
CVPR22 Oral | shunt through multi-scale token polymerization from attention, code is open source
AI Knows Everything: Building and Deploying a Sign Language Recognition System from Zero
STC8H开发(十五): GPIO驱动Ci24R1无线模块
UML类图五种关系的代码实现[通俗易懂]
supervisor 命令操作大全「建议收藏」
必看设计干货|易知微设计师是怎么做标准可视化设计服务的?
Word怎么设置图片衬于文字下方?两种方法教你设置Word图片衬于文字下方
重要的不是成为海贼王,而是像路飞一样去冒险
leetcode: the Kth largest element in the array
Wps下划线怎么弄?Wps添加下划线的最全方法
Cookie, session, token
Use convert_to_tensor in Tensorflow to specify the type of data
Referenced file contains errors 完美解决方法
凸集与凸函数
Jensen (琴生) 不等式
Word怎么制作双面席卡?使用Word制作双面席卡方法
How to Make Your Company Content GDPR Compliant
Install Mysql8.0 on windos, and solve the problem of re-login exception ERROR 1045 (28000)
TF generates uniformly distributed tensor
Sudoku | Backtrack-7