官方题解|欢乐赛#42
T1
思路分析
本题主要考察求解最大公约数的暴力做法,可以从大到小枚举所有的数,第一个出现的就是最大公约数,那么第二个出现的就是次大公约数了。也可以求出所有的公约数,然后通过下标去寻找次大的公约数。
T2
思路分析
本题是一个简单的思维题,我们能发现 4!4!4! 是第一个242424 的倍数,后面更大的数的阶乘又一定是 4!4!4! 的倍数,因为n!=1×2×3×4……×nn! = 1 \times 2 \times 3 \times 4 …… \times nn!=1×2×3×4……×n。所以当 n≤3n \leq 3n≤3 的时候,输出 "NO",否则输出 "YES"。
代码
T3
本题考查双重循环,类似于考级的题目,我们可以从下标为 111 开始读入字符串,然后对于第 iii 个字符嵌套一个循环输出 iii 遍即可。
T4
本题是一个很经典的问题,你可以暴力按照字典序搜索到第 mmm 小的数字,也可以直接灵活运用 next_permutation 来进行求解,如果选择后者那么你要先构造一个长度为 nnn 的字典序最小的序列。
T5
思路分析
本题是一道类似于2024csp-jT3的一道题,需要分类讨论。要想yyy最大,我们肯定要想 yyy 最长,所以我们尽可能的通过一些小的阶乘来替换大的阶乘。例如6!=5!∗3!6! = 5! * 3!6!=5!∗3!,我们可以通过 555 和 333 来替换 666 从产生的贡献,还有一些类似的替换方法,详细见代码。我们统计出每个数最多可以出现的次数,然后按照字典序最大的方式输出即可。
代码
T6
思路分析
本题考查贪心,数据范围很小,可以采用 O(n2)O(n^2)O(n2) 的时间复杂度。我们可以先把所有的元素排个序,然后依次从前往后选,如果满足当前选的比前一个选的大就选上,并统计答案,记得把选过的标记一下,一直选到不能选为止即可。