CF670A Holidays 题解
Content
假设 \(1\) 年有 \(n\) 天,而每周同样会有 \(5\) 天工作日和 \(2\) 天休假。求一年最小的休假天数和最大休假天数。
数据范围:\(1\leqslant n\leqslant 10^6\)。
Solution
题解区的做法都稍麻烦了些,其实这道题目只需要两行代码就能够搞定。一行输入,一行输出结果。
没听错,一行直接输出答案。原因是这道题目其实是有公式的。
首先我们知道,一年里面有 \(\left\lfloor\dfrac n7\right\rfloor\) 个完整的一周,之前的休假天数就是 \(\left\lfloor\dfrac n7\right\rfloor\times 2\)。
我们想,最小的休假天数无疑是一开始就是工作日,那么剩下来的那一周肯定是先工作日,后休假。具体休假的时间显然由 \(n\mod 7\) 来定。如果 \(n\mod 7\leqslant 5\),那么就没有假期,否则就有假期,因此就相当于先求出 \(n\mod 7-5\) 再和 \(0\) 取最大值,因此最小休假天数是 \(\left\lfloor\dfrac n7\right\rfloor\times 2+\max(n\mod 7-5,0)\)。
再想,最大的休假天数一定是一开始就是休假日,那么剩下来的那一周肯定是先休假,后工作日,同样也是由 \(n\mod 7\) 的值来定。如果 \(n\mod 7<2\),那么假期天数就是 \(n\mod 7\),否则就是 \(2\)(因为之后就是工作日)。因此最大休假天数就是 \(\left\lfloor\dfrac n7\right\rfloor\times 2+\min(n\mod 7,2)\)。
Code
int main() {
int n = Rint;
printf("%d %d", n / 7 * 2 + max(0, n % 7 - 5), n / 7 * 2 + min(n % 7, 2));
return 0;
}
声明一下,为了防止 sbxxs 抄题解,把快读、头文件以及宏定义都省略了。直接交这份代码肯定是没办法编译通过的。
最新文章
- Power Management开发的一般流程
- installing mysql,this may take a few minutes,hold on plz wdcp卡住解决办法
- ajax状态
- Struts2配置文件模板
- php中将url中的参数含有%20进行转换或解码
- 普通session vs MemcachedSession vs RedisSession
- HashMap的key装换成List
- eclipse提示servlet不存在 的解决办法
- 转: app端数据库(性能高) realm (ios, android 均支持)
- JavaScript忍者秘籍——函数(下)
- 记2017问鼎杯预赛的wp---来自一个小菜鸡的感想
- 【笔记】如何查看HTTP请求头&;&;【实验吧】天下武功唯快不破
- SHA1 安全哈希算法(Secure Hash Algorithm)
- MySQL相关命令
- Mysql exists 与 in
- electron-vue项目搭建
- springmvc文件上传示例
- 初级算法-6.两个数组的交集 II
- java使用md5加密
- MSSQL数据库后台进程(线程)
热门文章
- 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名
- 【NOI导刊200908模拟试题02 题4】【二分+Dijkstra】 收费站
- 洛谷 P5406 - [THUPC2019]找树(FWT+矩阵树定理)
- DirectX12 3D 游戏开发与实战第八章内容(上)
- CentOS6.9安装python3
- shell编程100列
- 1.TwoSum-Leetcode
- 打造基于 PostgreSQL/openGauss 的分布式数据库解决方案
- 强化学习实战 | 表格型Q-Learning玩井字棋(一)
- Elaticsearch(一)--基础原理及用法