【BIT2021程设】3.军训日记:安静!——难得的送分题
作者:互联网
写在前面:
本系列博客仅作为本人十一假期过于无聊的产物,对小学期的程序设计作业进行一个总结式的回顾,如果将来有BIT的学弟学妹们在百度搜思路时翻到了这一条博客,也希望它能对你产生一点帮助(当然,依经验来看,每年的题目也会有些许的不同,所以不能保证每一题都覆盖到,还请见谅)。
不过本人由于学艺不精,代码定有许多不足之处,欢迎各位一同来探讨。
同时请未来浏览这条博客的学弟学妹们注意,对于我给出完整代码的这些题,仅作帮助大家理解思路所用(当然,因为懒,所以大部分题我都只给一个伪代码)。Anyway,请勿直接复制黏贴代码,小学期的作业也是要查重的,一旦被查到代码重复会严厉扣分,最好的方法是浏览一遍代码并且掌握相关的要领后自己手打一遍,同时也要做好总结和回顾的工作,这样才能高效地提升自己的代码水平。
加油!
Description
成绩 | 10 | 开启时间 | 2021年08月24日 星期二 10:00 |
折扣 | 0.8 | 折扣时间 | 2021年08月28日 星期六 23:59 |
允许迟交 | 是 | 关闭时间 | 2021年10月10日 星期日 23:59 |
小军的军训开始了,于是他开始写军训日记。正经人谁写日记啊?但小军可不是一般人。
教官告诉同学们,军训时不要互相讲话,要安静!但熟悉的同学之间总会讲话,这让教官很头疼。
教官的队伍里总共有n名同学,编号为1~n。两个同学之间是熟悉的当且仅当他们的编号不是互质的。
为了让同学们保持安静,他把同学们分成若干个小队,每个小队里没有任何两个同学是熟悉的。但小队多了又不好管理,于是教官向擅长算法的小军请教,至少需要把n名同学分成多少个小队?
数据范围与提示:n≤10^7。一个小队可以只有一个人,这种情况也是满足要求的。
输出格式:行末无空格,文末有回车。
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
题意分析:
整个小学期最友好的一道题,没有之一。
“熟悉”等价于二者编号“不互质”,那么每个小队里没有任何两个人是“熟悉”的,就只需要每个小队所有人的编号都互质就行。
很容易想到,一个小组里不能出现两个偶数,因此名同学至少需要分成
个组(向下取整)。
同时我们又可以想到,相邻的自然数必定互质,因此对于每个偶数我们都可以用
与之配对(为什么不用
?自己先想想,一会告诉你),形成一个小组。可以发现,这样的分组情况也约为
,那么我们只需要研究一下边界条件。
这题的边界条件就一个1,我们知道,1与任何大于1的自然数都互质,所以1可以扔进任何一个小组里去,这也是上面选用的原因。于是我们就可以得出最终的结果,对于
名同学,我们至少要分
(向下取整)个小组,同时我们还可以保证至少存在一个等于
(向下取整)的可行解,那么这个值就是最终的答案。
别急!如果这时候提交上去你会发现还是有点红,咋办呢?那说明边界条件没研究干净,我们之前只研究了1作为边界条件和别人贴贴的情况,那么如果没有人和1贴贴呢?自然地补上这一条特殊情况,即只有一个1的时候,我们需要单独为他分一组。
完成!这题应该没必要贴代码了吧。
标签:同学,10,分题,代码,小队,互质,程设,军训,BIT2021 来源: https://blog.csdn.net/m0_62573554/article/details/120602935