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 抄题解,把快读、头文件以及宏定义都省略了。直接交这份代码肯定是没办法编译通过的。

最新文章

  1. Power Management开发的一般流程
  2. installing mysql,this may take a few minutes,hold on plz wdcp卡住解决办法
  3. ajax状态
  4. Struts2配置文件模板
  5. php中将url中的参数含有%20进行转换或解码
  6. 普通session vs MemcachedSession vs RedisSession
  7. HashMap的key装换成List
  8. eclipse提示servlet不存在 的解决办法
  9. 转: app端数据库(性能高) realm (ios, android 均支持)
  10. JavaScript忍者秘籍——函数(下)
  11. 记2017问鼎杯预赛的wp---来自一个小菜鸡的感想
  12. 【笔记】如何查看HTTP请求头&amp;&amp;【实验吧】天下武功唯快不破
  13. SHA1 安全哈希算法(Secure Hash Algorithm)
  14. MySQL相关命令
  15. Mysql exists 与 in
  16. electron-vue项目搭建
  17. springmvc文件上传示例
  18. 初级算法-6.两个数组的交集 II
  19. java使用md5加密
  20. MSSQL数据库后台进程(线程)

热门文章

  1. 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名
  2. 【NOI导刊200908模拟试题02 题4】【二分+Dijkstra】 收费站
  3. 洛谷 P5406 - [THUPC2019]找树(FWT+矩阵树定理)
  4. DirectX12 3D 游戏开发与实战第八章内容(上)
  5. CentOS6.9安装python3
  6. shell编程100列
  7. 1.TwoSum-Leetcode
  8. 打造基于 PostgreSQL/openGauss 的分布式数据库解决方案
  9. 强化学习实战 | 表格型Q-Learning玩井字棋(一)
  10. Elaticsearch(一)--基础原理及用法