以前欢乐赛好多次都不AK,终于全对了,发个题解。
第一题:换行
这是一道签到的题目
话不多说,直接上代码
第二题:求和
n <= 2147483647
循环遍历肯定超时,只能用求和公式。
如果n为奇数,公式为:(n+1)(n/2)+(n/2+1)
如果n为偶数,公式为:(n+1)(n/2)
上代码
第三题:权重
这题相对简单,按照题目模拟即可
注意开 long long
代码奉上
第四题:因子
这题本来不是很难,但是卡了我7次
可以先用自定义函数求出每个数的因子,再排序,统计前缀和,再用二分。(我的方法十分复杂,可以直接求出因子,在循环遍历)
代码
第五题:美丽数组
题目中已经告诉我们回文数组的判断方法,我们只需要把奇数下标的和统计出来,把偶数下标的和统计出来,再比较即可
代码奉上
第六题:字典序问题
这题考的是字典序,与整数的最大不同是字典序是逐位比较
比如99>100,因为99的第一位9大于100的第一位1
按照这个思路,我们只需要判断一下字符串n的每一位是不是9,如果都是,就输出n,如果不是,就输出n-1个9
可是这样的代码只能过部分分
比如输入一个9998
按照上述代码只会输出999,可是9998的字典序是大于999的,所以还要加一个判断
可以循环遍历到n.size()-1,每一次都输出一个9,再判断是不是都是9
如果不是,就结束
如果是,就把n的最后一个字符输出
最终代码
各位如果觉得不错,能否给个赞?